我正在使用 Umbraco (一个 .NET CMS),它有一个特定版本的 DLL 的引用(参见下面的 1 Umbraco 引用)。这很好,直到我尝试连接到引用同一 DLL 的不同版本的 .NET MailChimp API(请参阅下面的 2 PerceptiveMCAPI)。
我可以想出几个方案来解决这个问题
一个。获取 Umbraco 或 PerceptiveMCAPI 源并引用相同版本的 DLL,出于兼容性原因真的不想这样做
将 2 个 DLL 转储到 GAC 中,我想避免这种情况,因为我看到如果有人忘记会出现部署问题(我知道我们应该进行自动部署,但时间有限)
我记得还有第三个选项可以指定在配置中使用哪个版本的 DLL。这可能吗?它的代码是什么?
1 Umbraco 引用
// Assembly Reference CookComputing.XmlRpcV2
Version: 2.4.0.0
Name: CookComputing.XmlRpcV2, Version=2.4.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d
2 PerceptiveMCAPI
// Assembly PerceptiveMCAPI, Version 1.2.4.3
Location: C:\Work\AEGPL\AEGPL_Website\bin\PerceptiveMCAPI.dll
Name: PerceptiveMCAPI, Version=1.2.4.3, Culture=neutral, PublicKeyToken=null
Type: Library
最佳答案
这正是 GAC 存在的原因。我能想到的唯一其他解决方法是将这些 DLL 填充到子目录中,这样 CLR 就无法找到它们并实现 AppDomain.AssemblyResolve。您现在可以为每个新版本更新维护该代码。
关于c# - .NET编译的第三方DLL引用冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3805830/