C#解决引用第三方dll没有强签名问题

原创 2016年08月25日 19:56:26

首先先看问题的引入

针对word或excel操作时,出现VS2010或VS2013中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法



问了度娘,解决方法如出一辙:选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False。

问题轻松解决后,应该有很多人纠结这个“嵌入互操作类型”到底是个什么意思呢?

下面让我解释一下:

       1.”嵌入互操作类型”中的嵌入就是引进、导入的意思,类似于c#中using,c中include的作用,目的是告诉编译器是否要把互操作类型引入。

       2.“互操作类型”实际是指一系列Com组件的程序集,是公共运行库中库文件,类似于编译好的类,接口等。

       3.“嵌入互操作类型”设定为true,实际上就是不引入互操作集(编译时候放弃Com程序集),仅编译用户代码的程序集。

而设定为false的话,实际就是需要从互操作程序集中获取 COM 类型的类型信息。


进入正题:

在使用Brother打印机过程中,引用第三方的Interop.bpac.dll程序集因为没有强签名而导致编译不通过。

由因为其他工程文件全部都是带有强签名的,因此只能想办法将Interop.bpac.dll加上强签名。



    运行vs command prompt(管理员身份)

    目录:D:\ProgramFiles\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts




1、创建随机密钥对:sn -k D:/Test.snk



2、将dll文件解开:
      目录:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64

       ildasm Interop.bpac.dll /out:Interop.bpac.il
       注:将sn.exe、ildasm.exe、ilasm.exe、Interop.bpac.dll
、Test.snk都放在一个目录下,就能找到了。





3、添加签名并转回dll:ilasm /dll /res:Interop.bpac.res /key:Test.snk Interop.bpac.il /out:Interop.bpac.dll





===========================


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

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

关于C#应用第三方控件dll的使用方法及常见问题

在引用第三方控件是需要先了解第三方所提供的方法,一个完整的引用还需要提供方给出二次开发方案。这些不用都说,对于不同项目可能用法也是不同具体问题具体分析! 第三方控件一般会与COM方式提供,我们需要导入...
  • TracyMen
  • TracyMen
  • 2016年02月18日 22:57
  • 2989

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

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

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

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

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

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

关于C#应用第三方控件dll的使用方法及常见问题

在引用第三方控件是需要先了解第三方所提供的方法,一个完整的引用还需要提供方给出二次开发方案。这些不用都说,对于不同项目可能用法也是不同具体问题具体分析! 第三方控件一般会与COM方式提供,我们需要导入...
  • TracyMen
  • TracyMen
  • 2016年02月18日 22:57
  • 2989

C#调用C++编写的dll在IIS中报错,vs里面没有问题

项目中,用C#开发了一个web服务后台,提供接口以供外部调用。最近功能更新,更改了某个接口的实现,发版并测试之后,发现在vs中调试一切正常,但是发布到IIS中运行,就会出现问题,该接口调用不了。由于是...
  • u014650759
  • u014650759
  • 2017年11月22日 22:22
  • 98

C# DLL 签名

签名DLL 首先需要一个密钥文件,后缀为.snk 密钥文件使用sn.exe 创建: sn.exe /k MySingInKey.snk sn.exe 工具的具体使用,可以通过 sn.exe /h 或...
  • u013813838
  • u013813838
  • 2016年10月21日 19:36
  • 758

解决使用MSBuild编译项目没有拷贝间接引用的dll问题

Description:使用命令行编译项目时,只会拷贝直接引用的二进制dll到项目输出文件夹,不会拷贝间接引用的。例如同一解决方案下有A,B两个项目,A项目引用log4net,B项目引用A项目。使用V...
  • orichisonic
  • orichisonic
  • 2017年01月24日 11:29
  • 609

c#调用delphi写的dll遇到并解决的问题

c#调用delphi写的dll,需要以一级指针、二级指针作为参数传递。
  • cslover2015
  • cslover2015
  • 2017年01月06日 16:53
  • 1701
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#解决引用第三方dll没有强签名问题
举报原因:
原因补充:

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