我有一个这样的项目:
测试解决方案
Project TestApplication
References: TestFunctions.dll(ver 1.0.0.0),Project TestDLL
Project TestDLL
References: TestFunctions.dll(ver 1.0.0.1)
在应用程序中,我在其中调用TestDLL.Methodx() 调用TestFunctions.HelloWorld()但它给出了一个MissingMethodException 因为TestFunctions.HelloWorld()仅存在于TestFunctions.dll(ver 1.0.0.1)中 并尝试调用ver 1.0.0.0 dll中的函数...
如何强制它调用正确的版本?
我尝试使用“extern alias”无济于事......
答案 0 :(得分:2)
将引用的dll重命名为TestFunctions1.0.0.0.dll和TestFunctions1.0.0.1.dll
如果两个引用具有相同的名称,则将在编译
上覆盖另一个引用答案 1 :(得分:0)
我相信Visual Studio一次只允许一个版本的DLL。
也许尝试在运行时加载1.0.0.1版本 - Assembly.Load() - 来解决这个问题。
答案 2 :(得分:0)
你可以“强制”它来调用正确的DLL的唯一方法是引用正确的DLL,即你需要删除对v1.0.0.0的引用并添加对v1.0.0.1的引用
答案 3 :(得分:0)
您必须签署程序集(给它们一个强名称),并将它们放在GAC中,或者如果您使用的是Visual Studio,则必须将两个不同的版本构建到不同的输出文件夹中,并且设置对文件路径的引用,而不是项目输出。然后在参考属性中,您可以将特定版本更改为true。
答案 4 :(得分:0)
最后,我在另一个问题中解决了这个问题,根据使用它的项目重命名TestFunctions.dll
。这是更多的手工,但至少它是有效的。
我不知道其他一些答案是否也会起作用,因为我没有太多时间来测试它们。对不起的人。谢谢你的帮助!