首页 > 其他分享 >引用不同版本dll

引用不同版本dll

时间:2023-12-14 18:47:13浏览次数:23  
标签:log4net publicKeyToken dll 引用 版本 config Microsoft

问题描述
一个项目引用不同版本的同一dll,会引发以下报错:

未能加载文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一个依赖项。系统找不到指定的文件

这里来解决项目中同一dll的多版本问题。

解决方式
通过配置web.config配置文件(app.config或web.config)增加配置节点

不同场景有不同的解决方式,下面说明

1. 场景一 以高版本兼容
例如:新旧项目都引用Newtonsoft.Json,但是不同版本。需要以最高版本兼容。 

 

<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相同,配置方法:
<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不同,配置方法:
<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

————————————————
版权声明:本文为CSDN博主「donal努力」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dang13579/article/details/72956684

标签:log4net,publicKeyToken,dll,引用,版本,config,Microsoft
From: https://www.cnblogs.com/xiaoxihebei/p/17901754.html

相关文章

  • 战神电话app,版本低怎么办啊
    战神电话app版本低怎么升级您的App版本过低,已无法使用,请升级App您的App版本过低,已经停止提供烧录等功能,并即将停用全部功能,请记录设备密码并及时升级App 战神电话app版本过低怎么办解决,战神电话正式版zip最新版本下载,战神电话app说版本低怎么回事儿,战神电话APP更新 当出现......
  • React Native package.json 控制App的版本号
    原文:https://blog.csdn.net/gu1920948999/article/details/117984844package.json"version":"1.0.0",android配置android/app/build.gradleimportgroovy.json.JsonSlurper.../***获取版本号*/defgetAppVersion(){definputFile=new......
  • C++ 快速加载 Dll 里的 API
    最近项目里要重新编写程序加载器,也就是编译出一个可执行文件,在Windows上是.exe为什么要程序加载器?个人理解是,可执行文件大小最好是越小越好,功能都可以由dll文件执行而程序加载器里最重要的是两个win32函数,分别是LoadLibrary和GetProcAddress前者是加载dll并返回i......
  • navicat链接oracle时报错,检查是否是oci.dll库不匹配的问题
     1:安装Oracle数据库,安装时类型选择共享服务器,不要选专享服务器。2:确定Oracle,Navicat,OracleClient的位数,确保你的oracle数据库的位数与navicat位数一致,即:32v32,64v643:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,在这个页面下载和......
  • 七、变量的定义和引用
    七、变量的定义和引用7.1变量的引用和调试变量的调试在ansible中有一个debug模块,专门用来打印输出调试信息。它只有两个参数msg和var。msg:打印信息,类似于shell的echo和python的printvar:只能打印变量信息-name:installhttpdhosts:allvars:username:......
  • 如何判断lib和dll是32位还是64位?答案是使用微软的dumpbin工具,后面讲了如何使用gcc生成
    为什么我会考虑这个问题呢?因为我在使用java去调用一个c的lib库的时候,弹出以下警告:D:\work\ideaworkpaces\jdk21Test001\src\main\java\lib\hello.lib:%1不是有效的Win32应用程序。atjava.base/jdk.internal.loader.NativeLibraries.load(NativeMethod)然后我就在想是不是......
  • 支撑阻力指标,庄家成本价是可靠的支撑位(无未来,DLL加密)
    本指标依据庄家的成本价设计的,庄家成本价是可靠的支撑位。底层逻辑:庄家是有内幕的,庄家能在价格低位时抄底,庄家控股时,庄家不会让散户获取低价的筹码,所以当股价到达到支撑位时,会有比较大的反弹。庄家也会有出错的时候,在非融券的股票情况下,有以下三种方式:一、庄家极限拉高,可参考*ST......
  • 【JDK】windows安装多版本jdk,识别问题
    1、多版本在编辑JAVA_HOME时,可用版本号后缀编辑多个,在使用时,直接修改path上的JAVA_HOME名称即可  2、cmd输入java-version还是没改过来的问题原因是①C:\ProgramFiles\CommonFiles\Oracle这个目录有java的识别程序,删掉这俩文件夹即可 ②C:\ProgramFiles(x86)\Com......
  • vue版本区别
    一、说明:1、VueCLI4.5以下,对应的是Vue2;VueCLI4.5及以上,对应的是Vue3,当然,创建项目的时候可以选择Vue22、Vue2最老的版本是含index.html的,通过“yarnglobaladdvue-cli”安装,得到的最新版本号是2.9.63、只有Vue2不含Vue3的版本范围是3.3.0~4.4.6,通过“yarnglobaladd@vu......
  • Unity升级到2022版本后,打开Spine会卡住
    1)Unity升级到2022版本后,打开Spine会卡住2)iPhone在同时播放多个音效的时候会压低某些音源的音量3)在Y77手机上出现IMGSRV:GetMainShaderConstantBufferBaseAddress:Unsupported4)UE4打包后在部分安卓机型出现“花屏”这是第364篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖......