一个项目引用不同版本dll
2017-06-13 10:27
330 查看
问题描述
一个项目引用不同版本的同一dll,会引发以下报错:未能加载文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一个依赖项。系统找不到指定的文件
这里来解决项目中同一dll的多版本问题。
解决方式
通过配置web.config配置文件(app.config或web.config)增加配置节点不同场景有不同的解决方式,下面说明
1. 场景一 以高版本兼容
例如:新旧项目都引用Newtonsoft.Json,但是不同版本。需要以最高版本兼容。[html] view
plain copy
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
2. 场景二 同一dll两种版本共存
例如:项目自己引用log4net.dll 版本1.2.13.0 。添加第三方某个dll,第三方依赖log4net.dll版本1.2.9.0,项目中需要两种版本共存。这里还分两种情况,dll的publicKeyToken相同还是不同 (publicKeyToken查询见说明1)
publicKeyToken相同,配置方法:
[html] view
plain copy
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
<codeBase version="1.2.13.0" href="bin\log4netdll\1_2_13\log4net.dll" />
<codeBase version="1.2.9.0" href="bin\log4netdll\1_2_9\log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
publicKeyToken不同,配置方法:
[html] view
plain copy
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
<codeBase version="1.2.13.0" href="bin\log4netdll\1_2_13\log4net.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="b32731d11ce58905" />
<codeBase version="1.2.9.0" href="bin\log4netdll\1_2_9\log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
说明
1.publicKeyToken获取方式:使用vs的Tools Command Prompt命令行工具,输入:SN -T "path",例如:C:\Program Files (x86)\Microsoft Visual Studio 11.0>SN -T "D:\project\liberary\External\log4net.dll" Microsoft(R) .NET Framework 强名称实用工具 版本 4.0.30319.17929 版权所有(C) Microsoft Corporation。保留所有权利。 公钥标记为 b32731d11ce58905
注意:href的路径要保证正确。
参考文献
msdn对配置详解: 点击打开链接参考文章
http://blog.csdn.net/dang13579/article/details/72956684
相关文章推荐
- 同一个解决方案或有依赖关系的两个项目引用同名但不同版本的DLL
- .net在同一个项目中要引用两种不同版本的dll(dll hell)的解决办法
- .net在同一个项目中要引用两种不同版本的dll(dll hell)的解决办法
- 一个项目引用不同版本DLL
- 解决一个项目里面加载两个同名不同版本的DLL的问题
- 不同版本的控件在同一个项目中能否一起使用
- 子系统公用同一个Dll,但不同版本的解决办法
- 一个项目里同时用2个或多个不同版本的echarts插件
- 使用Visual Studio .NET 2010的配置和条件编译在一个项目实现不同版本
- WP开发 - 引入dll出现“无法向项目中添加对较高版本或不兼容程序集的引用”
- 项目中使用同一dll的不同版本
- 项目里不同版本之间调用DLL,引发的问题
- .NET 项目中引用的DLL 版本不一致的问题
- 新建立一个类似于CuteEditor的项目,希望有人参加。发布一个测试版本的dll
- 在visual studio中使用编译器指令让一个项目为不同产品生成不同版本(或为不同平台生成不同版本)
- Windows Phone开发,引入dll出现“无法向项目中添加对较高版本或不兼容程序集的引用”
- 如何在一个机器上针对不同的项目需求使用不同的pyhon版本和包
- 项目中同一个dll的x86和x64同时引用
- androidstudio 一个项目多个不同功能的版本解决方法(多渠道打包,生成不同包名的包)
- 一个页面中引用多个不同版本的jquery