C# 引用DLL版本冲突

已解决,到官网上下载旧key版本,然后再重定向即可。

手动引用两个版本的DLL错误的原因是我 publicKeyToken 大小写的问题(竟然没校验~~)

但我想不明白,这样搞如果依赖一多的话,甚至那个 publicKeyToken 都不统一的话,那管理起来不是会特别麻烦吗?

以下是原问题内容:

工程中要用到zookeeper,他依赖一个低版本的log4net,但是我想用高版本的log4net。

百度后发现可以使用 重定向程序集版本 来解决,但是实践后发现两个版本的 PublicKeyToken 还不一样!

这种情况该怎么办?只能拉代码重新生成一个吗?

再次尝试手动引用两个版本的DLL,其中一个用别名。

app.config 中增加 dependentAssembly

  <dependentAssembly>
      <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
    ??<codeBase version="1.2.10.0" href="DLL/log4net_1.2.10.dll" />
  </dependentAssembly>
  <dependentAssembly>
    ??<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
    ??<codeBase version="2.0.8.0" href="DLL/log4net_2.0.8.0.dll" />
  </dependentAssembly>

编译时候报:

warning MSB3243: 无法解决“log4net, Version=2.0.8.0, Culture=neutral,
PublicKeyToken=669e0ddf0bb1aa2a”与“log4net, Version=1.2.10.0,
Culture=neutral, PublicKeyToken=1b44e1d426115821”之间的冲突。正在随意选择“log4net,
Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a”。

启动报:

C# 引用DLL版本冲突 >> csharp

这个答案描述的挺清楚的:
http://www.goodpm.net/postreply/csharp/1010000008923000/C引用DLL版本冲突.html

时间: 2024-11-17 21:25:20

C# 引用DLL版本冲突的相关文章

VS 引用dll版本冲突问题

1.删除项目中的对应引用: 2.如果是有用到NetGet引用的删除项目中的packages里面的对应包文件: 3.如果是在NetGet中引用的注释项目中packages.config对应的插件名: 4.在Web.config里面可以控制对应的版本 此处以Newtonsoft.Json为例, <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssem

dll版本冲突的解决方法

问题描述 当运行站点或者控制台等程序时,如果项目引用的dll版本与其它dll所依赖的dll版本不一致,就会报未能加载程序集的错误.错误信息为: 未能加载文件或程序集"Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed"或它的某一个依赖项.找到的程序集清单定义与程序集引用不匹配. (异常来自 HRESULT:0x80131040) 原因分析 分析如下图. 解决方案 在web.

vs引用Microsoft.Office.Interop.Excel.dll版本问题

错误信息: {"检索 COM 类工厂中 CLSID 为 {00020819-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))."} 开始以为权限问题: dcomcnfg.exe 安全--启动与激活权限 访问权限自定义: 问题并没解决: excle组件问题大多都是权限和版本问题, 错误原因:引用Microsoft.Offi

npoi与memcached中的ICSharpCode.SharpZipLib版本冲突的解决方案

项目中一直使用NPOI与memcached,一直相安无事,但是最近升级了npoi到最新版本,发生了ICSharpCode.SharpZipLib的版本冲突问题. 因为此前一直使用的是NPOI的1.x的版本,用的SharpZipLib是0.84版本,而升级到最新版本以后,SharpZipLib的版本变成了0.86版本. 但是memcached的却没有最新版本供使用,而只能使用0.84的版本. 那么问题就来了,该如何解决同一个dll不同版本的冲突问题呢? 目前可以在gitbub上获取到最新版本的np

使用NPOI时ICSharpCode.SharpZipLib版本冲突问题解决

系统原来引用的ICSharpCode.SharpZipLib是0.84版本的, 添加了2.3版本的NPOI引用后,报版本冲突错误,因为NPOI用的ICSharpCode.SharpZipLib是0.86版本的. 百度了下,貌似没有好的解决办法. 还是得自己解决.... 解决过程: 1.github找到NPOI源码并下载:https://github.com/tonyqus/npoi 2.打开用vs2010打开OOXML.sln 3.把ICSharpCode.SharpZipLib替换成0.84版

【转】Windows7 下安装 JDK 7 时版本冲突问题解决

原文网址:http://wxl24life.iteye.com/blog/1966058 自己电脑上一直用的 JDK 版本是 1.6,今天决定更新到 1.7,在安装 JDK 1.7 后,控制台输入 java 命令测试是否安装成功的时候报错了: Other代码   C:\Users\wxl24life>java Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value '1.7', but 

用VS添加引用dll也会出错?你遇到过吗?

使用C#开发,我们经常引用各种类库,我们通常是在Visual Studio中引用上面单击右键,添加引用...,浏览...,选择dll,确定,但是这样做会不会有什么问题呢?当然,有人到现在为止没有碰到过问题,下面来一个实例,来说一下其中可能出现的问题.  一.搭建Demo 这里就以SQLite数据库为例吧,我们新建一个控制台项目,名字就叫做SQLiteDemo吧,然后在项目中添加Lib文件夹,放入SQLite要用的dll和xml配置文件,然后添加对System.Data.SQLite.dll的引用

jQuery版本冲突

jQuery多个版本或和其他js库冲突主要是常用的$符号的冲突. 一.冲突的解决 1.同一页面jQuery多个版本冲突解决方法 <body> <!-- 引入1.6.4版的jq --> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script> <script> var jq164 = jQuery.noConflict(

.NetCore2.0引用DLL报System.InvalidOperationException: Can not find compilation library location for package &#39;XXX&#39;

.NET CORE 2.0 MVC项目引用类库出现:System.InvalidOperationException: Can not find compilation library location for package 'XXX' 临时解决如下(据说2.0.1会修复):在Startup.cs文件中:修改: public void ConfigureServices(IServiceCollection services) { var mvcBuilder = services.AddMv