首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
vs2019实现强命名程序集
2024-11-03
使用VS2010命令提示窗口操作程序集强命名
说明:文中示例均以将文件置于D盘根目录(D:\)下为例. 一.查看程序集是否具有强命名 sn -T d:\LicBase.dll 若有则会显示PublicKeyToken值,反之不会. 二.给无强命名程序集添加强命名 1.创建密钥对,并将其存储在 d:\LicBase.snk 中 sn -k d:\LicBase.snk 2.反编译目标程序集 ildasm d:\LicBase.dll /out=d:\LicBase.il 3.重新编译,附带强命名参数 ilasm d:\LicBase.il /
第一部分 CLR基础:第3章 共享程序集和强命名程序集
第一部分 CLR基础:第3章 共享程序集和强命名程序集
CLR 关于强命名程序集 .
如何创建强命名程序集(Strong Name Assembly) 创建一个强命名程序集首先需要获得一个用强命名实用工具 (Strong Name Utility,即SN.exe,.NET SDK自带)产生的密钥. 下面简要介绍一下SN.exe的一些用法. 要产生一个公钥/私钥对: a)SN –k MyCompany.Keys 该命名告诉SN.exe创建一个名为MyCompany.keys的文件.MyCompany.keys文件将包含以对以二进制格式存储的公有密钥和私有
只有ReflectionOnlyLoadFrom才可以拯救与GAC冲突的强命名程序集
先说结论,如果有两个拥有相同程序集名称的强命名程序集,一个在GAC里,一个不在.怎样动态加载那个不在GAC里的程序集?答案就是只有Assembly.ReflectionOnlyLoadFrom才可以加载这个程序集, 比如我们把system.dll文件拷贝到D盘(注意应用程序域默认会加载mscorlib.dll,而不是system.dll).然后试试用下面的方法: var path = @"D:\system.dll"; //Load(byte[]) Assembly.Load(File
[.NET] - Enhanced Strong Naming (加强版的强签名程序集) – 如何迁移原有的强命名程序集
依据文档: https://msdn.microsoft.com/en-us/library/hh415055(v=vs.110).aspx 虽然文档上给出了看似完整的步骤,但是如果按照上面的步骤,结果是失败的.而且文档的里的option还用错了.(-ac应该用-a, -ac是用于keypaircontainer) 以下是一个完整的强签名迁移的sample: 用于测试的代码,可以建一个console app,类似下面的例子: using System; using System.Reflecti
.NET中查看一个强命名程序集(*****.dll)的PublicKeyToken的方法
使用命令行工具SDK Command Prompt,键入:SN -T C:\*****.dll (dll文件所在的路径) 就会显示出该dll具体的PublicKeyToken数值. 如果该程序集没有强命名,则不会有PublicKeyToken数值. 第一种方法: 在类库中右击-->属性-->签名:勾选“为程序集签名”,新建一个“强名称密钥文件”就可以. 如图所示: 第二种方法: 将一个程序集强命名的方法是: 用SN -k C:\***.snk命令生成***.snk文件,将该snk文件加载到项
C# 强命名程序集,防止dll被修改,混淆下发布
未能加载文件或程序集“Jonckers.Service.RedisCacheEngineExtend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项.需要强名称程序集. (异常来自 HRESULT:0x80131044) 强名称签名的方法: 强签名: 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可
强命名实用程序(SN.exe)
不要在普通的命令行窗口中编译,请先打开C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Visual Studio 2010\Visual Studio Tools路径下的Visual Studio 命令提示(2010),在该窗口中输入命令. 生成一个公钥/私钥对:SN -k 生成文件名(.snk) 创建一个只包含公钥的文件SN -p 公钥/私钥对文件(.snk) 生成文件名(.PublicKey) 查看公钥SN -tp
.NET程序集强命名删除与再签名技术 源代码剖析
如果你想去除一个程序集的强签名(strong name),目前为止可以有两个途径 1 反编译为IL代码,删除签名部分,再编译为程序集 2 应用Re-Sign程序,直接对一个程序集再签名 生成和读取强命名 先来看,如何生成.NET的签名文件,调用命令SN传入参数. 下面的代码读取该文件, FileStream keyPairFile = File.OpenRead("key.sn"); this.byte_2 = new StrongNameKeyPair(keyPairFile).
.net程序集强命名(签名)
要想得到强签名的dll有两种情况: 1.给项目添加强命名 在你的项目右键->属性->签名,勾选“为程序集签名”,新建 或 浏览已经新建过的.pfx文件,然后重新build项目,生成的dll就是强命名的dll了. 2.直接给dll强命名 运行vs自带的命令提示工具,执行 sn -k [文件名].snk 命令创建snk文件(其中[文件名]你自己命名,可以包含路径): 使用ildasm **.dll /out:**.il 将dll生成中间语言文件 再使用ilasm **.il /dll /key=[
DevExpress 重编译 替换强命名 修改源码
本文以DevExpress 11.1.8举例 必须满足几个条件 1. 必须有DXperience相应版本的全部源代码SourceCode.把全部源代码复制到X:\Program Files\DevExpress XXX\Components\Sources目录.目标目录的默认位置是在C:\Program Files\DevExpress 20XX\Components\Sources(其中X.X为应替换相应的版本号,以下不再重复说明). 2. 必须有一个强名称的文件.该文件可以是你自己生成的,或
membership DB生成 & dll 强命名 & 证书生成
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强命名冲突事件
一 问题的出现 现在要做一个net分布式平台,平台涉及多个服务之间调用问题,最基础的莫过于sso.由于我们的sso采用了wcf一套私有框架实现,另外一个webapi服务通过接口调用sso服务.由于sso和webapi都同时采用了 在net平台下广泛使用的序列化库Newtonsoft.Json,虽说他是开源的.,但是被不同的dll依赖过后会带有强命名.这个时候sso使用了Newtonsoft.Json强命名a,而webapi的system.web.http使用了Newtonsoft.Json强命
C# 生成强命名程序集并添加到GAC
针对一些类库项目或用户控件项目(一般来说,这类项目最后编译生成的是一个或多个dll文件),在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可以调用. 注册步骤如下: 1. 生成强程序集 1.1 生成密钥对 (1) 一般在VS的安装目录下 打开开发人员命令提示符. (2) 管理员权限运行开发人员命令行,输入命令生成密钥,例如: sn -k C:\Users\XXXXXX\Desktop\GAC\MyDLL.key 1
给第三方dll加上强命名的方法[C#]
在VS.NET 的命名行窗口下,输入如下的代码. 1 ,生成一个KeyFile sn -k keyPair.snk 2, 得到程序集的MSIL ildasm SomeAssembly.dll /out:SomeAssembly.il 3 ,为了避免冲突,把原来的DLL 文件改名 ren SomeAssembly.dll SomeAssembly.dll.orig 4 , 使用导出的MSIL 和刚创建的KeyFile 生成一个新的的DLL 文件. ilasm SomeAssembly.il /dl
通过VS2010命令提示窗口创建强命名文件时报错问题
问题描述详见图 解决方案 00000005意思是Access Denied(即拒绝访问). 原因是:Program Files(x86)目录对一般用户和未提升权限的管理员是只读的. 所以只要赋予Users.Tusted Installer用户组对文件夹Microsoft Visual Studio 10.0或VC的完全权限即可(不必对Program Files(x86)进行权限提升)
.NET中的PublicKeyToken以及强命名问题
在.NET的GAC出现之前,以前有DLL Hell的问题.这是由于当时对于共享的DLL的处理方式.是通过採用注冊表的方式实现的.当我们安装一个程序A的时候,这个程序包括一个共享的DLL,那么这个DLL就会就会写入到注冊表中,可是注意这里并没有写入版本号信息,仅仅是告诉你在哪个地方有一个叫做XX的DLL能够使用. 当安装另外的一个程序B的时候.也包括这个共享的DLL,可是是一个更加新一些的版本号,系统会发现这个DLL已经注冊存在了.就会用这个DLL去覆盖原来的DLL,可是由于注冊表中前后没有不论什
【C#进阶系列】23 程序集加载和反射
程序集加载 程序集加载,CLR使用System.Reflection.Assembly.Load静态方法,当然这个方法我们自己也可以显式调用. 还有一个Assembly.LoadFrom方法加载指定路径名的程序集,实际上其内部是先通过AssemblyName.GetAssemblyName获取AssemblyName对象,然后调用Assembly.Load方法. 此时load方法会在各个位置(前面03章讲过)查找程序集,如果已经加载了此程序集就返回已加载的程序集,如果没有加载就去加载找到的程序集
.net概念之程序集说明
一.程序集的一些基本概念: 程序集是包含一个或多个类型定义文件和资源文件的集合.它允许我们分离可重用类型的逻辑表示和物理表示. 程序集是一个可重用.可实施版本策略和安全策略的单元.它允许我们将类型和资源划分到不同的文件中,这样程序集的使用者便可以决定将哪些文件打包在一起部署.一旦CLR加载了程序集中包含清单的那个文件,它就可以确定程序集的其他文件中哪些包含了程序正在引用的类型和资源.任何程序集的使用者仅需要知道包含清单的文件名称.文件的划分对使用者是透明的,并且可以在将来改变,同时又不会破坏现有
【C#进阶系列】03 配置文件管理与程序集的引用版本重定向
先来点与标题不相关的: CLR支持两种程序集:弱命名程序集和强命名程序集. 两者的区别在于强命名程序集使用发布者的公钥和私钥进行签名.由于程序集被唯一性地标识,所以当应用程序绑定到强命名程序集时,CLR可以应用一些已知安全的策略. 程序集可以采用两种方式部署:私有或者全局.弱命名程序集只能以私有方式部署. 在<CLR via C#>的第三章主要讲了私有部署和全局部署的具体内容,以及弱命名程序集和强命名程序集. 但是老实说一般情况下确实用不到这些东西,所以这里就不写了. 还有一个就是对CLR如何
第十五章 调试及安全性(In .net4.5) 之 管理程序集
1. 概述 本章将介绍 什么是程序集.如何强命名程序集.如何把程序集放入GAC.程序集版本 以及 WinMD程序集. 2. 主要内容 2.1 什么是程序集 程序集(Assembly)概念的出现,是为了解决COM时代的各种问题的. ① 程序集是自包含的.不需要写入注册表或其他位置. ② 程序集是语言无关的.由中间语言组成,可以被.net支持的各种语言编写的程序使用. ③ 程序集支持多个版本. ④ 程序集支持简单拷贝的发布方式. 2.2 强命名程序集 CLR支持两种类型的程序集:强命名程序集 和 常
热门专题
UC 浏览器开发者版
git当前处于游离态
altera_reserved_tck突然出现
element生成二维码
hive sql map structure 类型不确定
foldersync ftp同步错误
nodejs 打印中文乱码、
matlab编译makefile
vmware虚拟机 新建硬盘并挂载
C# OutputDataReceived 不会回调
服务器慢导致jq有时执行不成功
qwidget 设置边框倒角
gerrit 删除之前的提交
abp 创建实体时可以继承哪些已有实体
IORESOURCE_MEM和IOSOURCE_IO资源区别
_7z文件前面一定是点吗
webapi 控制器 路由
mfc checkbox改变事件
redis rdb 分析平台
vscode如何同时提交gitee和github