【发布时间】:2016-12-20 16:39:39
【问题描述】:
我有一项服务,它涉及从云存储下载程序集,使用 Activator.CreateInstance 创建它的实例,然后在其上调用方法。
我已经设置了一个 AssemblyResolve 方法来下载运行良好的依赖项,但是为了测试/实验,我现在正在尝试手动下载程序集。我已经找到需要哪些依赖项,下载它们,然后使用加载它们
Assembly.Load(byte[])
之后我可以看到它们通过
加载到 AppDomainAppDomain.CurrentDomain.GetAssemblies())
但是,当我在引用它的程序集上调用方法时,它仍然会转到 AssemblyResolver。
我可能误解了加载的程序集和 AppDomain 的工作原理,但在我看来,一旦加载了程序集,它就应该可供该程序集使用并且不需要解决它?
为什么它不能“看到”它?版本名称等都是一样的。
我已经阅读了不同的程序集绑定上下文here,我认为这可能是问题所在?它表明使用 Assembly.Load(string) 将加载到与 Assembly.Load(byte) 不同的上下文?在这种情况下,当我将程序集作为字节 [] 保存在内存中时,我该怎么做?
谢谢
【问题讨论】:
-
即使你已经使用了Assembly.Load(..),它是否加载程序集失败?
-
你能在 Visual Studio 中显示你的
Debug->Widnows->Modules屏幕截图吗? -
请添加显示您如何加载类型、获取方法并执行它的代码。我已经对问题所在进行了有根据的猜测;-)
-
@Redhead 没有错误,因为它只会通过 AssemblyResolve 事件解决依赖关系,我想知道为什么它不能只使用我已经手动加载的程序集,我可以看到在 AppDomain.GetAssemblies() 中
标签: c# .net .net-assembly assembly-resolution