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

原创 2017年04月19日 14:29:06

  C#关于程序集生成失败及引用DLL及第三方DLL没有强名称,一个Assembly希望封装成为ActiveX/COM组件,那么它必须拥有强名(Strong Name),也就是说在编译的时候需要指定SNK(Strong Name Key);但是当一个Assembly如果以拥有强名的方式编译的话,它又要求所有自身所引用的其他Assembly都必须拥有强名,否则不能够成功编译。这时可以使用按照以下方式来创建或重建一个名称程序集。

首先要创建一个密钥对(以VS2013为例):

1、运行在“开始菜单”-“程序”-“Visual Studio 2013”-“Visual Studio Tools”-“VS2013 x64 兼容工具命令提示”(双击鼠标执行)如下图:


2、创建一个强名称程序集密钥文件文件

输入命令:sn -k xxxxxx.snk,如下图:


点击回车执行命令,如下图:


3、为类库绑定密钥文件

    (1)a. 如果你有要引用的类库的源代码,可以在类库项目中的AssemblyInfo.cs源文件中加入如下面的属性:
                  [assembly:AssemblyKeyFile("C:\keypair.snk")]

  备注:如果有源代码的情况下,也可以直接使用项目配置来使类库项目直接生成并绑定密钥对。配置如:右击“类库项目”->“属性”->“签名”选项卡->选择“为程序集签名”复选框->“选择强名称密钥文件(K):”下拉框->“新建”或“浏览”选择一个已存在的密钥文件。

b. 生成项目即可得到拥有强名称的类型库

      (2)如果你只有第三方的类库(xxxxxx.dll)文件而没有源码项目的话,需要继续做如下操作。

               a. 使用类库文件获取微软中间语言(MSIL)源码文件。

               输入:ildasm D:\xxxxxx.dll /out:xxxxxx.il(默认路径为:D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64)

             

   

               b. 使用MSIL源码文件(xxxxxx.il)和新生成的(keypair.snk)密钥文件创建新的程序集类库文件

                输入:ilasm xxxxxx.il /dll /key=keypair.snk(操作方法同上)


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013869554/article/details/70240078

深度学习实战-唐诗生成

-
  • 1970年01月01日 08:00

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

如果一个Assembly希望封装成为ActiveX/COM组件,那么它必须拥有强名(Strong Name),也就是说在编译的时候需要指定SNK(Strong Name Key)。但是当一个Assem...
  • donnie88888888
  • donnie88888888
  • 2016-10-06 12:02:43
  • 1904

关于程序集生成失败 -- 引用的程序集没有强名称的解决办法

 我在PetShop4程序中加入了一个业务外观层,然后在业务逻辑层(PetShop.BLL)引用这个程序集,点“生成”,出现以下的错误:“程序集生成失败 -- 引用的程序集没有强名称”,原因是PetS...
  • 46539492
  • 46539492
  • 2008-08-27 15:33:00
  • 9837

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

为项目添加强名称方法: 1.右键单击项目,打开属性窗口; 2.在属性窗口里选择《签名》标签,选中为程序集签名的选项,在下拉列表里选择新建,如下图所示: 3.打开新建签名窗口,...
  • CSDNCShuan
  • CSDNCShuan
  • 2016-05-22 23:00:38
  • 1279

CS1577 引用的程序集 “yourlib” 没有强名称

当我将我用 C++ CLR 写的 dll 引用到一个 C# 工程的时候后,发生 CS1577 引用的程序集 “yourlib” 没有强名称 编译错误,是因为没有为我的 C++ CLR 程序集设置 Ke...
  • felixz
  • felixz
  • 2006-05-17 16:54:00
  • 2351

VS2015 编译生成C#的DLL文件,并调用

转载请注明出处! C#生成dll文件是Visual Studio2015自动生成的,把项目的程序集信息(类的字段、属性、方法函数等信息)封装在dll中。然后其他项目可以通过引用dll来调用封装好...
  • u010377179
  • u010377179
  • 2016-10-20 20:55:11
  • 7086

给第三方dll强签名

假若我们要对第三方控件或者是其他的没有源代码的DLL文件想做类似的处理,增加强名称签名,怎么处理,是很多人都会面对的问题。 步骤: 1.首先采用反汇编工具ildasm生成中间语言。 ...
  • a497785609
  • a497785609
  • 2013-03-12 09:54:01
  • 5729

关于程序集生成失败 -- 引用的程序集没有强名称的解决办法

关于程序集生成失败 -- 引用的程序集没有强名称的解决办法  我在PetShop4程序中加入了一个业务外观层,然后在业务逻辑层(PetShop.BLL)引用这个程序集,点“生成”,出现以下的错误:“程...
  • a497785609
  • a497785609
  • 2010-07-15 22:19:00
  • 8355

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

为项目添加强名称方法: 1.右键单击项目,打开属性窗口; 2.在属性窗口里选择《签名》标签,选中为程序集签名的选项,在下拉列表里选择新建,如下图所示: 3.打开新建签名窗口,...
  • fin86889003
  • fin86889003
  • 2014-09-10 15:24:31
  • 1185

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

没有源码的DLL文件添加强名称  如果项目中引用了其他没有源码的dll文件,并且此dll文件是没有强名称的程序集, 则编译时会出现类似 "Assembly generation failed --...
  • jurken
  • jurken
  • 2015-03-27 14:03:52
  • 621
收藏助手
不良信息举报
您举报文章:C#关于程序集生成失败【引用DLL及第三方DLL没有强名称的解决办法】
举报原因:
原因补充:

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