使用命令行给第三方dll程序集强命名(原)

原创 2013年05月16日 22:45:11

--------------------------------------编辑人:Lidan--------------------------------------

        一般我们在给程序集强命名时,都会直接使用VS进行强命名,但是这只是我们在有源代码时才这么做。如果我们使用的是第三方的程序集,此方法是行不通。这种情况下,我们就需要使用到VS里的另一工具:Sn.exe  来使用命令行给程序集命名。

项目引用如下图:

        此时我们无法直接右键属性去给此程序集强命名,但我们可以通过使用Sn.exe去强命名,在此附上微软官方的Sn.exe解释,感兴趣的朋友可以自己去研究。
http://msdn.microsoft.com/zh-cn/library/k5b5tt23(VS.80).aspx

 

我们打开VS的命令行工具:

打开如下命令行窗口:

执行命令行..................................................................
sn -k SapHelper.snk                      //--新建一个密钥对

执行命令行..................................................................

ildasm SapHelper.dll /out=SapHelper.il           //--反编译目标程序集

执行命令行..................................................................

ilasm SapHelper.il /dll /resource=SapHelper.res /key=SapHelper.snk /optimize  //--加入密钥后重新编译生成新的dll

到此,据有强命名的新dll已经生成完毕,我们还可以用一个命令行来验证此dll是否生效。

执行命令行..........................................................................................................................

此时把新编译好的dll再重新引用到项目中,就可以编译通过

 

最后不要忘记,其实你新生成的强命名dll,是存放在你所打开的命令行窗口的当前编译目录下。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

关于强命名程序集

关于强命名程序集的作用总的来说就是两个:1、是防止window以前版本中的DLL hell,可以唯一标志你的程序集(也可以防冒充,像现在的很多木马都是利用这个原理来附属到你的应用程序,加载到你的内存中...
  • Caizhanshu
  • Caizhanshu
  • 2006年11月29日 18:37
  • 569

C# 使用VS导进自己写的dll或者第三方dll

打开你的工程,就是解决方案,选中工程,右键,“添加引用”   浏览 你要导进的dll,如下图: 比如我导进CreateDLL.dll,在你需要使用时,请using CreateDLL;就可以...
  • u010411264
  • u010411264
  • 2016年01月11日 18:12
  • 1638

C#程序集使用强名字(Strong Name)签名/强名称签名

C# dll强签名介绍 之前基本没有这个概念,直到有一天我们的dll被反编译了,导致我们的代码基本上被看到了,才想起来要保护dll的安全性,因为C#语言的在编译过程中会产生中间语言导致dll很容...
  • hjpcb
  • hjpcb
  • 2013年03月04日 14:03
  • 2805

引用程序集没有强名称解决办法

引用程序集没有强名称解决办法(http://www.cnblogs.com/tearer/archive/2010/09/01/1814655.html) 为项目添加强名...
  • jiftlixu
  • jiftlixu
  • 2016年03月10日 16:02
  • 3037

VC生成的dll环境配置(修改名称)

1、设置输出路径.h文件到include中,生成文件为debug和release两个版本,要分别设置...
  • chenscmail
  • chenscmail
  • 2013年08月14日 17:31
  • 1787

如何:使用命令行创建和使用程序集(C# 和 Visual Basic)

转自: http://msdn.microsoft.com/zh-cn/library/3707x96z(v=vs.110).aspx 一个程序集或动态链接库 (DLL) 在运行时链接...
  • liuzhuoran1110
  • liuzhuoran1110
  • 2012年11月25日 11:09
  • 312

C#关于程序集生成失败【引用DLL及第三方DLL没有强名称的解决办法】

C#关于程序集生成失败及引用DLL及第三方DLL没有强名称,一个Assembly希望封装成为ActiveX/COM组件,那么它必须拥有强名(Strong Name),也就是说在编译的时候需要指定S...
  • u013869554
  • u013869554
  • 2017年04月19日 14:29
  • 920

ResGen.exe 可能无法运行,因为命令行的长度为XX个字符,超过了命令的最大长度。若要解决此问题,请 (1) 删除不需要的程序集引用,或者 (2) 缩短这些引用的路径。

由 Microsoft 在 2010/2/15 於 15:52 公佈 Thanks, this is a known issue that's fixed for RTM but slipped...
  • a1015088819
  • a1015088819
  • 2014年11月25日 16:35
  • 925

Asp.net中强签名dll:引用程序集没有强名称解决办法

本文呢,意在和大家共同学习一下如何对自己的Dll文件实现强签名,在一定程度上防止别人反编译和破解,具体为项目添加强名称方法如下三步走: 1.右键单击项目,打开属性窗口; 2.在属性窗口里选择《签名...
  • llxchen
  • llxchen
  • 2013年04月16日 15:38
  • 2926

用强名称程序集避免“DLL地狱”

为Microsoft .NET框架创建应用程序时,你获得的最大的一个承诺就是能避免所谓的DLL地狱。它是指当一个组件更新后,可能会中断依赖于它的其他应用程序。然而,为了理解这个承诺,开发者需要熟悉“强...
  • aifudi
  • aifudi
  • 2011年01月16日 22:16
  • 1894
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用命令行给第三方dll程序集强命名(原)
举报原因:
原因补充:

(最多只允许输入30个字)