gpt4 book ai didi

.net - 如何修复 "No way to resolve conflict between"错误?

转载 作者:行者123 更新时间:2023-12-01 23:32:43 24 4
gpt4 key购买 nike

最近将 log4net.dll 添加到我们的数据对象中。我们的数据对象构建完美,但是当您尝试构建引用我们的数据对象的任何内容时,您会收到以下错误:

No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.

我发现了以下thread这使我能够获得有关该问题的更多信息。

log4net 在我们的项目中用于多种用途。例如,crystal 将 1.2.9 安装到 GAC 中。我知道 infragitics 使用 1.2.10。

我们有一个特定的目录 - 称之为 c:\references - 我们在其中构建所有 dll,并且所有应用程序都使用它来引用我们的内部 dll。因此,我专门将数据对象中的引用设置为版本 1.2.11 的 c:\references\log4net.dll。这很奇怪,因为在上面的错误消息中您没有看到 1.2.11。该 dll 以特定版本引用:= True & Copy Local:= True。我检查了 log4net 的构建目录 & 1.2.11 确实已正确移动。

如果有帮助,这里是一些详细的错误消息:

There was a conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905".
No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
References which depend on "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" [C:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll].
C:\Windows\assembly\GAC_MSIL\CrystalDecisions.Shared\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Shared.dll

References which depend on "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905" [C:\Program Files (x86)\Business Objects\Common\4.0\managed\log4net.dll]. c:\references\DBObjectAdoNet.dll
Project file item includes which caused reference "c:\references\DBObjectAdoNet.dll".

更新:到目前为止,我发现修复该错误的唯一方法是在引用 DBObjectAdoNet.dll 的任何内容中引用 log4net。这对我们来说并不是一个真正可用的解决方案,因为几乎我们整个系统中的一切都使用它。

第二次更新:尝试将 log4net 放入 GAC 中,认为这可以解决问题,但仍然没有成功。

第三次更新:我已向 Microsoft 调用了支持电话。他们希望我使用 Assembly.LoadFrom() ,但我对此非常非常犹豫,因为我们在一个应用程序中进行了超过 300,000 次调用,并且每次调用都需要反射,这会大大减慢速度。

我发现如果我在我的机器上卸载了 crystal 运行时,错误就会消失,这没有多大意义,因为据我所知,它唯一做的就是从.NET Framework 2.0 文件夹下的 GAC,这应该不重要,因为该应用程序是 .NET Framework 4 应用程序。

最佳答案

打开项目文件(C# 中的 .csproj 或 VB.NET 中的 .vbproj)进行编辑。

确保 log4net 引用为 Fully Qualified Type Name ,具有 HintPathSpecificVersion=True

<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\references\log4net.dll</HintPath>
<SpecificVersion>True</SpecificVersion>
</Reference>

保存文件并尝试重建。

关于.net - 如何修复 "No way to resolve conflict between"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9828216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com