DLL强名称引用问题

为没有源码的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文件重新引入到项目中然后编译。

时间: 2024-10-17 08:09:29

DLL强名称引用问题的相关文章

未能添加对***.dll的引用问题

在机器A上运行.编译成功的程序,在B上不能正确被编译,并且添加r如 knbook.dll 时候提示如下: 未能添加对"knbook.dll"引用,请确保此文件可以访问并且是一个有效的COM组件或程序集 解决方法2个: 1.检查此dll文件是否为”只读“,修改方法,右键”属性“,若文件”属性“那里的只读勾选了,请去掉勾选. 然后重新添加引用即可 若还出现上述不能添加的问题,用下面的解决办法2 2.命令控制台下输入:regsvr32  e:\drms\web\knbook.dll(DLL文

关于vs2012解决方案中项目DLL文件引用问题

今天用vs2012建了项目框架,老是出现说解决方案中的项目dll文件不存在,但是我按照路径去找是可以找到这个文件的,也就是说这个文件存在的.我按照引用顺序单个编译每个项目都是成功的,就是当我编译整个解决方案的时候就会报某个项目的dll文件不存在.但是我运行时可以运行的.这种问题还是我第一遇到过.我当时就在想是不是我的项目中出现循环引用了啊,因为这种错误一般情况下是不会出现的,我检查了一下项目架构,的确没有这种低级错误. 出现这种现象后来我想了一会,首先就是出现这样的原因肯定是项目在编译时先后顺序

未能添加对***.dll的引用 问题解决方法

这个不是什么新问题了,这里说一下我遇到的这个操蛋事. 转载请注明出处 http://www.cnblogs.com/zaiyuzhong/p/6236263.html 我做的和往常一样,找到SDK开发包中的dll文件copy到项目然后添加引用,报错“未能添加对xxx.dll的引用,不是一个有效的blahblahblah”,试了下列网上的解决方法,未果. 想了一下演示程序里也有dll,copy过来,报错“未找到接口地址blahblahblah”.看了一下示例代码没发现有dll文件,大惊,遂打开示例

引用动态链接库Dll文件 引用失败 未能添加对HD.dll的引用。请确保此文件可访问并且是一个有效的程序集或COM组件

出现这个问题,是由于使用了非.NET 的动态链接库,需要注册 方法如下: 1.在搜索程序和文件中使用 regsvr32 "D:\Projects\8.01.01.03-重庆大足\lib\ValidateServerRelease32.dll" 命令就可以了 引用动态链接库Dll文件 引用失败 未能添加对HD.dll的引用.请确保此文件可访问并且是一个有效的程序集或COM组件

C#开发模式——dll多级引用的问题

C#解决方案里有两种引用方式,项目引用和dll物理文件引用. 一.项目引用 严格引用,项目文件需包含在解决方案里,好处是便于调试,可直接进入代码.缺点是耦合度太高(必须全部编译通过才能run起来),项目太大的话编译麻烦,不利于部署升级和测试.因为是严格引用,单独替换dll是不起作用的.而且每次升级程序都要重新编译.打包.卸载.安装,相当麻烦. 二.dll物理文件引用 松散引用,引用的是dll物理文件,dll项目包不包含在解决方案里都无所谓(一般是包含的),好处是不必全部重新编译,哪里修改编译哪里

找不到编译动态表达式的一种或多种类型。是否缺少对microsoft.CSharp.dll和System.core.dll的引用”

xlbook1.Worksheets[1]这块下面显示红色的波浪号,并有提示“找不到编译动态表达式的一种或多种类型.是否缺少对microsoft.CSharp.dll和System.core.dll的引用”. 解决办法是将引入的COM对象(miscrosoft excel 12.0 object library),属性里的嵌入互操作类型改为Fasle

Visual Studio使用技巧笔记(引用程序集自动复制dll到引用项目目录)

copy /y $(TargetPath) $(SolutionDir)\[您项目引用dll文件的目录]\$(TargetFileName) 例如:copy /y $(TargetPath) $(SolutionDir)\Dynamic.CallEntryTests\dlls\$(TargetFileName)

C#在不同平台下DLL的引用问题

很多时候,我们需要引用在不同平台下的DLL,32位(X86)和64位(X64).如果平台错误,在C#中会引发BadImageFormatException异常,未能加载或程序集. 解决思路 我们同时不能添加不同平台下的DLL,即使名称不一样(会报类型同时存在于两个DLL中).能不能只在某种平台下引用,在其他平台下不引用呢? 我们知道,VS工程的配置都保存在配置文件(.csproj)中.在VS中,找到相应的项目,右键选择卸载项目,完成后项目变为灰色,与下图类似.然后在项目上单击右键,选中编辑(项目

LIB和DLL的引用

DLL的LIB:记录了DLL里面输出的函数和类 项目链接LIB时:会读LIB里面exported的内容,在项目的生成文件(exe/dll,下文指的是exe)生成导入地址表(IAT),里面包含:[项目PE文件引用的函数(不引用的不在IAT中)- 对应DLL里的位置]: 如果是在项目配置里面链接LIB的话,在项目PE文件装入内存时,Windows 装载器才将iat里面的DLL 装入(动态连接):如果是在延迟链接的话,就在dll相关函数调用装载相应的DLL(延迟加载DLL): DLL载入内存时,将完善