C# .NET编译的第三方DLL引用冲突
我正在使用(一个.NET CMS),它引用了一个特定版本的DLL(请参见下面的1 Umbraco引用)。这很好,直到我尝试挂接到.NET MailChimp API,该API引用同一DLL的不同版本(请参见下面的2 PerceptiveMCAPI) 我可以想出几个解决这个问题的办法 a。获取Umbraco或PerceptiveMCAPI源代码并引用同一版本的DLL,出于兼容性原因,确实不希望这样做 b。在GAC中转储2个DLL,我希望避免这种情况,因为如果有人忘记了,就会出现部署问题(我知道我们应该进行自动部署,但时间有限) 我记得还有第三个选项可以指定在配置中使用哪个版本的DLL。这可能吗?代码是什么 1翁布拉科参考资料C# .NET编译的第三方DLL引用冲突,c#,.net,vb.net,dll,gac,C#,.net,Vb.net,Dll,Gac,我正在使用(一个.NET CMS),它引用了一个特定版本的DLL(请参见下面的1 Umbraco引用)。这很好,直到我尝试挂接到.NET MailChimp API,该API引用同一DLL的不同版本(请参见下面的2 PerceptiveMCAPI) 我可以想出几个解决这个问题的办法 a。获取Umbraco或PerceptiveMCAPI源代码并引用同一版本的DLL,出于兼容性原因,确实不希望这样做 b。在GAC中转储2个DLL,我希望避免这种情况,因为如果有人忘记了,就会出现部署问题(我知道我们
// Assembly Reference CookComputing.XmlRpcV2
Version: 2.4.0.0
Name: CookComputing.XmlRpcV2, Version=2.4.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d
2感知MCAPI
// 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。现在,您可以为每个新版本更新维护该代码 请注意,第三个选项仅在两个版本之间没有中断更改的情况下有效,即,如果Umbraco和PerceptiveMCAPI都使用相同的版本而没有问题。我不完全确定它是否有效,但第四个选项可能是使用ILMerge并将每个库与它所需的版本合并,就像我提到的,GAC在部署时可能会有问题。我们通常使用XCopy文件夹进行部署,如果bin中不存在DLL,它很容易被忘记。我正在研究的解决方案最终希望它能在共享托管环境中工作,而GAC在这种情况下是不允许的。