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

本文介绍了如何为项目添加强名称签名以及如何为未签名的DLL文件添加强名称,包括生成密钥对、反编译与重新编译程序集等步骤。

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

3.打开新建签名窗口,输入签名的名称密码等内容,
单击确定后,签名添加完成。

 
为没有源码的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文件重新引入到项目中然后编译。
当代码第4行提示未能找到类型或命名空间名称‘Hik’,缺少 using 指令或程序集引用时,可以尝试以下解决办法: ### 检查 using 指令 确保在代码文件的顶部添加了正确的 `using` 指令。例如,如果 `Hik` 命名空间存在,在文件开头添加: ```csharp using Hik; ``` ### 检查程序集引用 1. **确认引用程序集是否存在**: 确保包含 `Hik` 命名空间的程序集已经被引用到项目中。在 Visual Studio 中,可以在“解决方案资源管理器”中右键单击项目,选择“添加” -> “引用”,然后在“引用管理器”中查看是否有包含 `Hik` 命名空间的程序集。如果没有,需要找到该程序集并添加引用。 2. **检查程序集版本**: 确保引用程序集版本是正确的。有时候,使用不兼容的程序集版本可能会导致找不到命名空间的问题。可以尝试更新或降级程序集版本。 3. **检查程序集路径**: 如果程序集是通过相对路径引用的,确保路径是正确的。如果程序集被移动或删除,需要更新引用路径。 ### 检查项目配置 1. **检查目标框架**: 确保项目的目标框架与包含 `Hik` 命名空间的程序集兼容。如果目标框架不匹配,可能会导致找不到命名空间的问题。可以在项目属性中查看和更改目标框架。 2. **检查编译选项**: 确保项目的编译选项没有排除包含 `Hik` 命名空间的程序集。有时候,编译选项的设置可能会影响程序集引用。 ### 重新构建解决方案 有时候,简单地重新构建解决方案可以解决一些引用问题。在 Visual Studio 中,可以选择“生成” -> “重新生成解决方案”。 ### 示例代码检查 以下是一个简单的示例,展示了如何检查和添加引用: ```csharp // 假设这是代码文件 using System; // 检查是否添加了 Hik 命名空间的 using 指令 using Hik; namespace MyProject { class Program { static void Main() { // 使用 Hik 命名空间中的类型 // 这里假设 Hik 命名空间中有一个名为 MyClass 的类 Hik.MyClass myObject = new Hik.MyClass(); Console.WriteLine("Object created successfully."); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值