• 如何使一个你没有源代码的DLL文件变为强命名的DLL


    转载:

    有时候你会需要一个DLL是强命名的,比如你想把这个文件放到GAC里面。如果这是一个第三方的DLL,你没有源代码,这会是一件比较麻烦的事情。有一个方法可以解决这个问题。 

      在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 /dll /key= keyPair.snk  

      这些工具都在哪里? 

      C:WINDOWSMicrosoft.NETFrameworkv2.0.50727ilasm.exe

      C:Program FilesMicrosoft Visual Studio 8SDKv2.0Binildasm.exe

      C:Program FilesMicrosoft Visual Studio 8SDKv2.0Binsn.exe

      

      为没有源码的DLL文件添加强名称

      如果项目中引用了其他没有源码的dll文件,并且此dll文件是没有强名称的程序集,则编译时会出现类似 "Assembly generation failed -- 引用的程序集 'xxxxxxxxxxx' 没有强名称" 这样的错误。
    我这里引用的是Interop.Scripting.dll程序集,它不是强名称的,则需要进行以下操作:
      1.打开SDK 命令提示窗口;
         2.创建一个新的随机密钥对:
      sn -k Interop.Scripting.snk
      3.反编译目标程序集
      ildasm Interop.Scripting.dll /out=Interop.Scripting.il
      3.重新编译,附带强命名参数
      ilasm Interop.Scripting.il /dll /resource=Interop.Scripting.res /key=Interop.Scripting.snk /optimize
      4.验证签名信息
      sn -v Interop.Scripting.dll

      OK,将生成的dll文件重新引入到项目中然后编译。


     
  • 相关阅读:
    2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
    2020: [Usaco2010 Jan]Buying Feed, II
    3396: [Usaco2009 Jan]Total flow 水流
    3403: [Usaco2009 Open]Cow Line 直线上的牛
    2102: [Usaco2010 Dec]The Trough Game
    最小生成树——Kruskal算法
    最短路径——Floyd算法(含证明)
    最短路径——Bellman-Ford算法以及SPFA算法
    最短路径——Dijkstra算法以及二叉堆优化(含证明)
    普通并查集
  • 原文地址:https://www.cnblogs.com/wene/p/3799577.html
Copyright © 2020-2023  润新知