一些幸运的事情让我从未遇到过这个问题,尽管我认为这是一个常见的问题:
我有一个名为“SomeProject”的web项目,其中引用了第三方库“SomeThirdParty”版本1.0。 “SomeProject”还引用了自行开发的类库“SomeLibrary”。 “SomeLibrary”也引用了“SomeThirdParty”,但是是不同的版本(假设是2.0)。
“SomeThirdParty”的版本1.0和2.0共享大部分相同的签名,但实现不同。如果可能的话,我需要“SomeProject”使用1.0实现,“SomeLibrary”使用2.0实现。
我使用“SomeProject”参考log4net编译代码。最终在bin目录中生成的DLL是“SomeProject”的引用。运行时,当“SomeLibrary”中的代码运行时,它尝试执行来自“SomeThirdParty”版本2.0的代码,当然会失败,抛出“FileLoadException:无法加载文件或程序集'SomeThirdParty,Version = 2.0.0.0,Culture = [etc.]'或其某个依赖项。找到的程序集清单定义与程序集引用不匹配。”
显然,我可以将“SomeProject”升级到较新的DLL或将“SomeLibrary”降级为旧的DLL,但出于许多原因,这并不理想。
我认为正确的答案涉及在GAC中安装SomeThirdParty,但我不确定如何做到这一点以及它将如何影响其他开发人员和服务器。
欢迎您提供任何建议。
感谢您的帮助。
我有一个名为“SomeProject”的web项目,其中引用了第三方库“SomeThirdParty”版本1.0。 “SomeProject”还引用了自行开发的类库“SomeLibrary”。 “SomeLibrary”也引用了“SomeThirdParty”,但是是不同的版本(假设是2.0)。
“SomeThirdParty”的版本1.0和2.0共享大部分相同的签名,但实现不同。如果可能的话,我需要“SomeProject”使用1.0实现,“SomeLibrary”使用2.0实现。
我使用“SomeProject”参考log4net编译代码。最终在bin目录中生成的DLL是“SomeProject”的引用。运行时,当“SomeLibrary”中的代码运行时,它尝试执行来自“SomeThirdParty”版本2.0的代码,当然会失败,抛出“FileLoadException:无法加载文件或程序集'SomeThirdParty,Version = 2.0.0.0,Culture = [etc.]'或其某个依赖项。找到的程序集清单定义与程序集引用不匹配。”
显然,我可以将“SomeProject”升级到较新的DLL或将“SomeLibrary”降级为旧的DLL,但出于许多原因,这并不理想。
我认为正确的答案涉及在GAC中安装SomeThirdParty,但我不确定如何做到这一点以及它将如何影响其他开发人员和服务器。
欢迎您提供任何建议。
感谢您的帮助。