c# - 在运行时使用本机依赖项(和其他文件/文件夹)加载程序集
问题描述
我想在运行时加载程序集 A。这个程序集 A存在于应用程序的子文件夹中,并且对一些其他本机程序集、一些 jar 文件和 jre 文件夹具有运行时依赖项(所以我们正在谈论一些 java 包装器)。所有这些依赖项都存在于与Assembly A相同的文件夹中。
该图将是这样的:
问题是:
由于应用程序(消费者)构建文件夹中不存在Assembly A运行时依赖项,因此出现异常并且无法使用它。
这是在运行时加载程序集的源代码示例以及该程序集拥有的类型实例的使用。当我调用_ = instance.GetSomething()
. 例外是:
System.TypeInitializationException:“'AssemblyA_Dependency.Type' 的类型初始化程序引发了异常。”
var assembly = Assembly.LoadFrom(@"Releases\VersionA\AssemblyA.dll");
var sdkProxyType = assembly
.GetExportedTypes()
.Where(type => typeof(ISdkProxy).IsAssignableFrom(type))
.First();
var instance = (ISdkProxy)Activator.CreateInstance(sdkProxyType);
_ = instance.GetSomething();
PS:请记住,如果我将所有Assembly A依赖项复制到使用者构建文件夹中,它将正常工作。
有没有办法克服这个问题?
解决方案
推荐阅读
- python - Alexa 技能立即超时
- javascript - 使用 jQuery 为单选选项隐藏和显示 div 可以变得更简单吗?
- html - 图片仅在 Gmail 而不是 Ymail 上中断
- javascript - 使用 jQuery 隐藏/显示元素
- java - 如何在 Spring Boot 中公开诸如可下载链接之类的资源
- uwp - ReactiveUI - 如何共享属性?
- ios - 如何确定是否启用了 ASAM?
- javascript - 给定特定输入时如何重定向到特定页面
- scala - 找不到参数解析器的隐式值:play.api.mvc.BodyParser[Any]
- bash - JMeter Beanshell 断言:如何保存 Runtime.getRuntime().exec("ifconfig | grep \"${IpAddress}\" | wc -l") 的值?