对程序集“D:\oss\nHibernate\src\NHibernate\obj\Debug\NHibernate.dll”签名时加密失败 --“读取密钥文件“..\NHibernate.snk”时出错 我在编译nHibernate时出现以下错误,请问如何解决?对程序集“D:\oss\nHibernate\src\NHibernate\obj\Debug\NHibernate.dll”签名时加密失败 --“读取密钥文件“..\NHibernate.snk”时出错 -- 系统找不到指定的文件。 ” 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NHIBERNATE.DLL这个控件被人家用强名称保护了,你用不了! NHIBERNATE.DLL如果有编译这个类的源码!你可以去掉强名称的保护了!如果没有,估计是用不了这个DLL了! 解决方法:1. 去掉强名称签名,然后编译.2. 用sn产生一个签名,取名为nhibernate.snk, 放到nhibernate指定的位置再编译。 编译一下,会有一大堆的错误,其中最后一点是:对程序集“G:\NetBookShelf\nhibernate\nhibernate-0.7.0.0\src\NHibernate\obj\Debug\NHibernate.dll”签名时加密失败 --“读取密钥文件“..\NHibernate.snk”时出错 -- 系统找不到指定的文件。 ” 原因是没有密钥文件,可以使用这样的方法创建一个密钥文件: 1,找到签名工具sn.exe,默认的路径是:系统盘:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;(如果没有的话通过搜索sn.exe来查找) 2,选择桌面上的“我的计算机”图标,右击,属性/高级/环境变量/系统变量/新建/系统变量 ,弹出新建系统变量对话框,如下设置: 变量名:path 变量值:系统盘:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin; 3,打开命令行,执行 C: sn -k NHibernate.snk 会在c盘中生成一个NHibernate.snk文件,把他剪贴到\nhibernate-0.7.0.0\src\NHibernate\obj\目录下。 编译就可以通过了。 或者最直接的方法就是,不要签名了,找到NHibernate-1.1项目的AssemblyInfo.cs文件,注释掉下面一行: [assembly: AssemblyKeyFileAttribute("..\\NHibernate.snk")] 编译就可以通过了。下面简单的解释以下strong name:(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconStrong-NamedAssemblies.asp) 加密签名是计算机安全方面的名词,加密分为对称和非对称加密,这里用的是后者, strong name是进行程序集版本控制和名称保护的,对一个程序集进行签名后就会得到一个strong name。strong name由以下几部分组成程序集的标识(即它的简单文本名称),版本号和区域性信息(如果提供的话),以及公钥和数字签名。strong name可以确保一个程序集名称的唯一性。强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。 需要强调的是,是对程序集的加密和签名(包括名称,版本等信息)得到强名称,强名称是唯一的,所以程序集也是唯一的,程序集加密签名成strong name需要使用私钥,这个私钥由keyname和keyfile组成,其中KeyName 是指已经安装在计算机上的加密服务提供程序(CSP)中的密钥。KeyFile 是指包含密钥的文件(其实就是.snk文件)。KeyFile通过sn.exe生成。 行之有效的方法:打开源文件将AssemblyInfo.cs文件里的:[assembly: AssemblyKeyFile("")]设成这样,然后重新编译即可. 重新生成一个SNK或引用放在其他地方的SNK试试 如何改变CheckListBox 各项之间的距离。 C# ListView 滚动条大小问题 怎么不管用啊? Div隐藏的问题 如何使用相对路径啊~ 急~急~急 这个和线程池有关的程序该如何实现? 请问个位大虾,怎么在.net(C#)调用MSN的API,实现获取所有MSN中的好友的列表的功能---在线待答 能否在console程序里画一条蓝色的斜线? c#winform窗体axShockwaveFlash1的加载和播放代码 combobox控件,设成只读后,为什么不能设初值 [求助]急,有StreamWriter和File class 问题 求助 网上选课系统原代码
1. 去掉强名称签名,然后编译.
2. 用sn产生一个签名,取名为nhibernate.snk, 放到nhibernate指定的位置再编译。
对程序集“G:\NetBookShelf\nhibernate\nhibernate-0.7.0.0\src\NHibernate\obj\Debug\NHibernate.dll”签名时加密失败 --“读取密钥文件“..\NHibernate.snk”时出错 -- 系统找不到指定的文件。 ”
原因是没有密钥文件,可以使用这样的方法创建一个密钥文件:
1,找到签名工具sn.exe,默认的路径是:系统盘:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;(如果没有的话通过搜索sn.exe来查找)
2,选择桌面上的“我的计算机”图标,右击,属性/高级/环境变量/系统变量/新建/系统变量 ,弹出新建系统变量对话框,如下设置:
变量名:path
变量值:系统盘:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;
3,打开命令行,执行
C:
sn -k NHibernate.snk
会在c盘中生成一个NHibernate.snk文件,把他剪贴到\nhibernate-0.7.0.0\src\NHibernate\obj\目录下。
编译就可以通过了。 或者最直接的方法就是,不要签名了,找到NHibernate-1.1项目的AssemblyInfo.cs文件,注释掉下面一行:
[assembly: AssemblyKeyFileAttribute("..\\NHibernate.snk")]
编译就可以通过了。
下面简单的解释以下strong name:
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconStrong-NamedAssemblies.asp)
加密签名是计算机安全方面的名词,加密分为对称和非对称加密,这里用的是后者, strong name是进行程序集版本控制和名称保护的,对一个程序集进行签名后就会得到一个strong name。strong name由以下几部分组成程序集的标识(即它的简单文本名称),版本号和区域性信息(如果提供的话),以及公钥和数字签名。strong name可以确保一个程序集名称的唯一性。强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。
需要强调的是,是对程序集的加密和签名(包括名称,版本等信息)得到强名称,强名称是唯一的,所以程序集也是唯一的,程序集加密签名成strong name需要使用私钥,这个私钥由keyname和keyfile组成,其中KeyName 是指已经安装在计算机上的加密服务提供程序(CSP)中的密钥。KeyFile 是指包含密钥的文件(其实就是.snk文件)。KeyFile通过sn.exe生成。