记一次dll强命名冲突事件】的更多相关文章

一  问题的出现 现在要做一个net分布式平台,平台涉及多个服务之间调用问题,最基础的莫过于sso.由于我们的sso采用了wcf一套私有框架实现,另外一个webapi服务通过接口调用sso服务.由于sso和webapi都同时采用了 在net平台下广泛使用的序列化库Newtonsoft.Json,虽说他是开源的.,但是被不同的dll依赖过后会带有强命名.这个时候sso使用了Newtonsoft.Json强命名a,而webapi的system.web.http使用了Newtonsoft.Json强命…
UPD(Membership)数据库安装1.使用 Aspnet_regsql.exe 安装数据库 在 C:\WINDOWS\Microsoft.NET\Framework\\aspnet_regsql.exe2.一步步按照指引即可 ClickOnce需要创建证书C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64 1.创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具,命令如下:…
要想得到强签名的dll有两种情况: 1.给项目添加强命名 在你的项目右键->属性->签名,勾选“为程序集签名”,新建 或 浏览已经新建过的.pfx文件,然后重新build项目,生成的dll就是强命名的dll了. 2.直接给dll强命名 运行vs自带的命令提示工具,执行 sn -k [文件名].snk 命令创建snk文件(其中[文件名]你自己命名,可以包含路径): 使用ildasm **.dll /out:**.il 将dll生成中间语言文件 再使用ilasm **.il /dll /key=[…
未能加载文件或程序集“Jonckers.Service.RedisCacheEngineExtend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项.需要强名称程序集. (异常来自 HRESULT:0x80131044) 强名称签名的方法: 强签名: 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可…
使用命令行工具SDK Command Prompt,键入:SN -T C:\*****.dll  (dll文件所在的路径) 就会显示出该dll具体的PublicKeyToken数值. 如果该程序集没有强命名,则不会有PublicKeyToken数值. 第一种方法: 在类库中右击-->属性-->签名:勾选“为程序集签名”,新建一个“强名称密钥文件”就可以. 如图所示: 第二种方法: 将一个程序集强命名的方法是: 用SN -k C:\***.snk命令生成***.snk文件,将该snk文件加载到项…
先说结论,如果有两个拥有相同程序集名称的强命名程序集,一个在GAC里,一个不在.怎样动态加载那个不在GAC里的程序集?答案就是只有Assembly.ReflectionOnlyLoadFrom才可以加载这个程序集, 比如我们把system.dll文件拷贝到D盘(注意应用程序域默认会加载mscorlib.dll,而不是system.dll).然后试试用下面的方法: var path = @"D:\system.dll"; //Load(byte[]) Assembly.Load(File…
如果你想去除一个程序集的强签名(strong name),目前为止可以有两个途径 1  反编译为IL代码,删除签名部分,再编译为程序集 2  应用Re-Sign程序,直接对一个程序集再签名 生成和读取强命名 先来看,如何生成.NET的签名文件,调用命令SN传入参数. 下面的代码读取该文件, FileStream keyPairFile = File.OpenRead("key.sn"); this.byte_2 = new StrongNameKeyPair(keyPairFile).…
如何创建强命名程序集(Strong Name Assembly)     创建一个强命名程序集首先需要获得一个用强命名实用工具   (Strong Name Utility,即SN.exe,.NET SDK自带)产生的密钥.   下面简要介绍一下SN.exe的一些用法. 要产生一个公钥/私钥对:     a)SN –k MyCompany.Keys   该命名告诉SN.exe创建一个名为MyCompany.keys的文件.MyCompany.keys文件将包含以对以二进制格式存储的公有密钥和私有…
最近在将一个复杂的工程集成到现有的项目中.编译时发现,有的变量名冲突了,提示就是xxxx ambiguous symbol,并且在编译输出时,指明了两个文件当中特定的变量名或者类名相同.出现这个编译错误的原因是,在工程中加载了两个头文件,这两个头文件中包含相同的类名或者变量名,解决及避免出现此类错误的方法如下: 代码库尽量包含在一个命名空间中.在我们写一个大的程序时,一些变量可能会与其他工程造成重名,所以加命名空间是很有必要的:另外,在自己的代码库中命名的类名变量名尽量以代码库的名称开头,这样大…
第一部分 CLR基础:第3章 共享程序集和强命名程序集…