我有一个使用加载程序集的程序Asssembly.LoadFrom
方法。一段时间后我尝试使用Type.GetType
从该程序集创建类型(使用AssemblyQualifiedName
),但该方法返回null
。如果我将其设置为抛出异常,它会告诉
无法加载文件或程序集“...”
或其依赖项之一。系统
找不到指定的文件。
但我确信已经加载了完全相同的程序集(它显示在AppDomain.CurrentDomain.GetAssemblies()
list).
有人知道可能出了什么问题和/或如何解决这个问题吗?
为了理解为什么这不起作用,您需要理解“加载上下文”的问题。 Type.GetType 只查看“Load”上下文。您加载到内存中的程序集位于“LoadFrom”上下文中。
真正在加载上下文中进行绑定以查看加载源上下文中的程序集的唯一方法是使用 AssemblyResolve 事件并编写代码以返回正确的程序集。 AssemblyResolve 事件在绑定失败且所有其他程序集查找未成功之前触发。
有关加载上下文以及使用 LoadFrom 时出现的问题的更多信息,请参阅以下链接。
MSDN - http://msdn.microsoft.com/en-us/library/dd153782.aspx http://msdn.microsoft.com/en-us/library/dd153782.aspx
装配解决-http://msdn.microsoft.com/en-us/library/system.appdomain. assemblyresolve.aspx http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx
苏珊娜·库克 -Link https://web.archive.org/web/20160219225050/http://blogs.msdn.com:80/b/suzcook/archive/2003/05/29/57143.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)