如何解决“无法解决之间的冲突”错误?

2024-07-03

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

无法解决“log4net,Version=1.2.10.0,Culture=neutral,PublicKeyToken=692fbea5521e1304”和“log4net,Version=1.2.9.0,Culture=neutral,PublicKeyToken=b32731d11ce58905”之间的冲突。任意选择“log4net,Version=1.2.10.0,Culture=neutral,PublicKeyToken=692fbea5521e1304”。

我发现了以下内容thread https://stackoverflow.com/questions/1871073/resolving-msb3247-found-conflicts-between-different-versions-of-the-same-depen这使我能够获得有关该问题的更多信息。

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".

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

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

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

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


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

确保 log4net 参考是完全限定类型名称 http://msdn.microsoft.com/en-us/library/yfsftwz6.aspx, has HintPath and SpecificVersion=True.

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

保存文件并尝试重建。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决“无法解决之间的冲突”错误? 的相关文章

  • 使用 WPF 显示流式富文本

    我有一个 WPF 应用程序 它通过套接字连接到设备并获取流文本数据 每秒大约 1 条消息 然后 该数据将显示在 UI 上 用户可以创建规则 例如 如果数据包含 abc 则突出显示该行 or 大胆一点 所以纯文本输出不行 它需要是 富 文本
  • 最好的 OAuth2 C# 库是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Application.ThreadException:如果不分离,内存泄漏?

    The 参考页 http msdn microsoft com en us library system windows forms application threadexception aspx对于 Application Thread
  • 长时间保持数据库连接打开是否安全

    我有一个连接到远程数据库的 net 客户端应用程序 在客户端的生命周期 小时 内保持单个连接打开是否安全 如果我有多个 10 或 100 个客户端正在运行 这个答案是否成立 这样做绝对是安全的 这就是客户端 服务器应用程序的工作方式 如果您
  • 具有 SHA-1 的 .NET RSACryptoServiceProvider 的 Java 等效项

    我有以下 C 数据签名代码 RSACryptoServiceProvider rsa new RSACryptoServiceProvider string PrivateKeyText
  • HttpUtility.HtmlDecode 不解码空格?

    我有这个 string test HttpUtility HtmlDecode http test com Folder1 Folder2 my 20view aspx 当我查看测试时 它仍然有 20 而不是空格 为什么它不解码这个 您正在
  • HttpUtility.HtmlDecode 不解码空格?

    我有这个 string test HttpUtility HtmlDecode http test com Folder1 Folder2 my 20view aspx 当我查看测试时 它仍然有 20 而不是空格 为什么它不解码这个 您正在
  • 小数可以表示的第二个最小值是多少?

    什么是第二个最小值值一个decimal可以代表吗 该值大于Decimal MinValue并且小于任何其他值decimal可以代表 在C 中如何获取这个值 谢谢 第二个最小值是Decimal MinValue 1 这可以从文档中推断出dec
  • 在编写任何锁之前我应该​​对多线程问题进行单元测试吗?

    我正在编写一个我知道需要锁的类 因为该类必须是线程安全的 但由于我是测试驱动开发 我知道在为其创建测试之前我无法编写一行代码 我发现很难做到 因为测试最终会变得非常复杂 在这些情况下你通常会做什么 有什么工具可以帮助解决这个问题吗 这个问题
  • 如何将程序集保存到磁盘?

    如何将程序集保存到文件 IE 我的意思不是动态程序集 而是 正常 内存中程序集 Assembly asslist AppDomain CurrentDomain GetAssemblies foreach Assembly ass1 in
  • 如何将程序集保存到磁盘?

    如何将程序集保存到文件 IE 我的意思不是动态程序集 而是 正常 内存中程序集 Assembly asslist AppDomain CurrentDomain GetAssemblies foreach Assembly ass1 in
  • 正在更改的线程参数

    当启动多个线程时 id我正在解析的参数有时是错误的 这是我的启动 for int i 0 i lt threadCount i Thread thread new Thread gt WorkerThread i thread Start
  • 创建代表“今天”的 NodaTime LocalDate

    创建代表 今天 的 LocalDate 实例的推荐方法是什么 我原以为 LocalDate 类中有一个静态的 Now 或 Today 属性 但没有 我当前的方法是使用 DateTime Now var now DateTime Now Lo
  • 如何在 C# 中以编程方式创建 Microsoft Access 数据库?

    如果 Microsoft Access 数据库文件尚不存在 如何在 C 中创建它 最简单的答案是嵌入一个空的 mdb accdb文件写入您的程序并将其写入磁盘 正确的答案是将 COM Interop 与 ADOX 库一起使用 var cat
  • 有没有免费的 C# 视频录制(屏幕)库?

    我正在寻找免费的 C net 库 它允许我录制计算机屏幕的视频 加上声音 基本上 做 camtasia 所做的事情 周围有什么好用的吗 Thanks 我遇到了解决您问题的方法 它使用 Windows Media Encoder 9 来录制桌
  • FindByIdentity - 性能差异

    以下代码在我们域中的各种机器上运行良好 var context new PrincipalContext ContextType Domain var principal UserPrincipal FindByIdentity conte
  • 从程序集中加载并执行代码而不锁定文件?

    有没有办法从磁盘加载程序集并执行其中的代码而不将文件锁定在磁盘上 我一直不明白为什么有必要锁定文件 因为代码将加载到 RAM 中并进行 JIT 编译 您正在寻找的称为卷影复制 你必须创建一个新的AppDomain http msdn mic
  • System.Diagnostics.Process UseShellExecute 到底做了什么?

    我有一个 MSBuild 任务 它执行 除其他外 对 xcopy 的调用 我发现 当我从批处理文件运行 MSBuild 任务时 对 xcopy 的调用可以正确执行 并且无法执行或生成任何输出 无法让我知道从另一个批处理文件调用同一个批处理文
  • 我如何解决 log4net 不断更改 publickeytoken 的问题

    我们有一个 asp net 4 0 项目 它使用几个依赖于 log4net 版本 1 2 10 0 的框架 今天我尝试包含一个依赖于 log4net 版本 1 2 11 0 的新框架 从那时起我就陷入困境 log4net 1 2 10 0
  • 如何解决有关 TcpListener: 请使用 TcpListener(IPAddress localaddr, int port) 的警告?

    我创建了一个新表单 在顶部我做了 using System using System Collections Generic using System ComponentModel using System Data using Syste

随机推荐