【发布时间】:2012-04-11 18:54:55
【问题描述】:
我正在编写一个测试应用程序来执行一些回归测试。这个想法是能够在库的多个版本上运行测试。我的目标是将dll加载到字典中,其中键是版本字符串(例如“3.0.0.0”),值是Assembly实例。我能够动态加载一个程序集并在其上调用一个方法,但是当我尝试加载第二个程序集时,出现以下异常:
The located assembly's manifest definition does not match the assembly reference.
我正在使用以下行加载程序集:
asm = Assembly.LoadFrom(lib, hash, System.Configuration.Assemblies.AssemblyHashAlgorithm.MD5);
'lib' 是 dll 的完整文件名和路径。 'hash' 是 dll 的 md5 和。
我看起来即使我告诉 Windows“使用这个 dll”,它也会查看名称并说“我已经拥有那个”并使用之前加载的一个,并且由于哈希不匹配,所以它失败了。本来加载的dll没有设置Assembly Version,所以我设置了4个不同的版本,但是还是抛出了同样的异常。
有什么办法解决这个问题?
乔丹
【问题讨论】:
-
你试过加载程序集的字节数组吗?
-
是的,尽管该方法已被弃用。还是不行。
-
我猜,比起在单独的应用程序域中加载程序集然后卸载应用程序域将是您最好的选择。 :)
标签: c# .net assemblies