C# 依赖同一个强签名程序集的不同版本

最近遇到一个问题就是要在同一个项目中同时使用Newtonsoft.Json.dll的不同版本。在网上搜索了下解决方案,基本都是在app.config或web.config中进行设置。

这次我亲自试验了一下,基本能解决我的问题。在此记录一下,以后参考。app.config的配置如下图所示:

<codeBase>元素中的href属性可以使用相对路径。

至于如何获取强签名程序集的publicKeyToken,我知道的方法有有两种:

1.打开visual studio command prompt : sn -T <assembly>

2.使用.net reflector查看

时间: 2024-11-06 07:08:46

C# 依赖同一个强签名程序集的不同版本的相关文章

程序集强签名

1.特点 1.1.强签名的程序集可以注册到GAC(全局应用程序集缓存),不同的应用程序可以共享同一个dll. 1.2.强签名的库(应用程序)只能引用强签名的库.非强签名的库(应用程序)没有限制,既可以引用强签名的库,也可以引用非强签名的库.(实际测试,强签名的应用只引用非强签名的程序集但不使用是可以的,只要使用了引入库的东西,那就会报:引用的程序集没有强签名) 1.3.强签名无法保护源代码,但能防止dll被第三方篡改. 1.4.能防止dll冲突. 2.方法 --如果有源代码 项目 -> 右键 -

程序集强签名和安装程序数字签名

一.程序集强签名 这个是.net 中的概念,为了保证程序集本身不被篡改,即保证这个程序集是你开发的,同时强命名使不同的程序可以指定不同的程序集版本,不影响其他应用程序.要对程序集进行强签名,无需使用购买的代码签名数字证书,用.NET提供的sn工具就可以生成snk文件,你只要保存好这个文件,就可以保证你的程序集的签名. 方法1:在SDK中创建强名称签名的程序集(Sn.exe),可以生成密钥对.我们使用如图9-4的命令生成一个新的密钥对并保存到本地文件test.snk中. 签名时使用编译器执行 CS

VS报:&quot;dll标记为系统必备组件,必须对其进行强签名&quot;错误

问题: VS生成程序时,报“要将程序集“XX.dll”标记为系统必备组件,必须对其进行强签名.”错误. 解决方法: 1)在报错的解决方案中找到一个可以发布的项目(引用该XX.dll的项目未必可以发布): 2)右击该项目,选择“属性”: 3)选择“发布”: 4)点击“应用程序文件”按钮: 5)找到该“XX.dll”,将发布状态有“系统必备”改为“包括(自动)”: 6)再次运行成功. 参考: 1. 首先说明一下:X是某程序集的名称,相当于数学中的未知数X. 看到这样的提示,开始我以为是把程序集X的发

NET 强签名

强签名: 1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll. 2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名的dll. 3. 强签名无法保护源代码,强签名的dll是可以被反编译的. 4. 强签名的dll可以防止第三方恶意篡改. 强签名的方法: 1. 有源代码: 1.1 使用vs tool command:snk –k mykey.snk 生成签名公钥. 1.2 将公钥加入项目中,并设置项目属性,设置签名公

20190904_ 警告 发现同一依赖程序集的不同版本间存在冲突。

错误原因: 严重性 代码 说明 项目 文件 行 禁止显示状态警告 发现同一依赖程序集的不同版本间存在冲突.请将项目文件中的“AutoGenerateBindingRedirects”属性设置为 true.有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=294190. ControlItech6433 其实微软的报错消息已经非常清楚了: 项目文件中的“AutoGenerateBindingRedirects”属性设置为 true 打开你的项目 *

系统优化(一)Maven打包同一个jar有不同的:版本+时间戳(解决思路)

解决:maven仓库的ear里面有很多个相同的jar(只是包含不同的:版本+时间戳) 问题描述: 发现ear里面有很多个相同的jar,只是包含不同的:版本+时间戳,如下图所示: (例如:itoo-basic-api有很多相同的jar,只是包含不同的:版本+时间戳) 解决思路 用权限的itoo-authority-usergroup-ear模块进行测试 1.怀疑是:maven的坐标,时间戳的问题 关键字: maven snapshot maven war中同一个jar有很多不同版本 maven 本

程序集生成失败 -- 引用的程序集“ThoughtWorks.QRCode”没有强名称,为没有源码的程序集强签名

进入sdk提示符界面,依次输入如下指令 sn -k ThoughtWorks.QRCode.snk ildasm ThoughtWorks.QRCode.dll /out=ThoughtWorks.QRCode.il ilasm ThoughtWorks.QRCode.il /dll /resource=ThoughtWorks.QRCode.res /key=ThoughtWorks.QRCode.snk /optimize sn -v ThoughtWorks.QRCode.dll

给第三方dll强签名

假若我们要对第三方控件或者是其他的没有源代码的DLL文件想做类似的处理,增加强名称签名,怎么处理,是很多人都会面对的问题. 步骤: 1.首先采用反汇编工具ildasm生成中间语言. ildasm myTest.dll /out:myTest.il 生成的结果包括myTest.il文件和myTest.res文件 2.采用汇编工具ilasm重新生成我们自己的dll文件 ilasm的具体用法可参照MSDN的帮助,其中有一个参数/key即可为我们重新生成新的签名文件 ilasm /dll /res:my

【C#进阶系列】03 配置文件管理与程序集的引用版本重定向

先来点与标题不相关的: CLR支持两种程序集:弱命名程序集和强命名程序集. 两者的区别在于强命名程序集使用发布者的公钥和私钥进行签名.由于程序集被唯一性地标识,所以当应用程序绑定到强命名程序集时,CLR可以应用一些已知安全的策略. 程序集可以采用两种方式部署:私有或者全局.弱命名程序集只能以私有方式部署. 在<CLR via C#>的第三章主要讲了私有部署和全局部署的具体内容,以及弱命名程序集和强命名程序集. 但是老实说一般情况下确实用不到这些东西,所以这里就不写了. 还有一个就是对CLR如何