关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
来源:互联网 发布:超次元矩阵要关服了吗 编辑:程序博客网 时间:2024/05/16 18:15
我在PetShop4程序中加入了一个业务外观层,然后在业务逻辑层(PetShop.BLL)引用这个程序集,点“生成”,出现以下的错误:“程序集生成失败 -- 引用的程序集没有强名称”,原因是PetShop.BLL是强命名程序集,强命名程序集不能用普通程序集造成的。 那么什么叫强命名程序集呢?我们知道,以前在Windows下开发程序时常会遭遇著名的“DLL Hell”问题,即动态链接库的向后兼容问题。微软在.Net产生前曾尝试使用COM组件的方式来解决DLL Hell问题,即使用Guid来唯一的标识每一个COM组件。但是,实际上使用COM组件(包括版本升级)也是一件颇为麻烦的事:为了运行COM组件就必须在组册表中对其进行注册,重新编译有可能破坏Guid从而导致原来引用此COM组件的程序不能正确运行,等等。 在.Net中,微软引入了一种新的解决方案:强命名程序集(Strong Name),以及与之配套的全局程序集缓存(GAC)来解决这个问题。 我们知道,.Net使用Name、Version、Culture、PublicToken四个属性来唯一标识一个程序集,而不同产品前三个属性(Name、Version和Culture)完全相同的情况是有可能发生的,如此一来,这唯一标识程序集可重任就落到PublicToken的头上了。强命名的程序集正是使用RSA来保证PublicToken的唯一性,因为在理论上,非对称算法RSA生成的公钥/私钥对不会重复。.Net正是通过在编译项目时将指定的公钥/私钥对写入程序集来保证其唯一性。 对于全局程序集缓存(GAC),MSDN是这样介绍的:安装有公共语言运行库的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存。全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集。 在开发一般的、非共享的程序时,我们不需要使用强命名的程序集,仅将项目(Project)编辑成.DLL或者.EXE即可。但是,如果我们开发的是组件库、框架时,通过对程序集进行强命名,并使用将其部署到GAC中,可以保证我们的程序集不会出现版本问题。 那么,如何创建强命名的程序集呢?以下是其步骤 [assembly:AssemblyKeyFile("C:/MySloutionKey.snk")] 根据以上的说法,这个错误的解决问题如下: 首先打开visual studio 2005命令提示(开始-->程序-->microsoft visual studio 2005-->visual studio tools-->visual studio 2005命令提示),在其中输入:sn -k PetShop.IBLL.snk回车,这样就生成了 PetShop.IBLL.snk,在路径C:/Program Files/Microsoft Visual Studio 8/VC找到 PetShop.IBLL.snk文件,放在IBLL项目的根目录也就是IBLL目录下,然后打开BLL项目的AssemblyInfo.cs,在里面加入如下代码行:[assembly: AssemblyKeyFile("PetSHop.IBLL.snk")], 然后重新生成PetShop.IBLL项目,这样一个强命名的程序集就生成了。关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- sharepoint 2010 关于程序集生成失败,引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- 关于程序集生成失败-引用的第三方DLL没有强名称的解决办法
- C#关于程序集生成失败【引用DLL及第三方DLL没有强名称的解决办法】
- 引用程序集没有强名称的解决办法
- 引用程序集没有强名称解决办法
- 引用程序集没有强名称解决办法
- 引用程序集没有强名称解决办法
- 引用程序集没有强名称解决办法
- 引用程序集没有强名称解决办法
- 引用程序集没有强名称解决办法
- SELECT-SQL 命令详解
- 状态
- USB驱动开发(1)
- VirtualBox桥接功能设置
- 加快从教育大国向教育强国迈进(社论)
- 关于程序集生成失败 -- 引用的程序集没有强名称的解决办法
- SharpStreaming项目开发纪实:构建基本的服务器及客户端应用(四)——总体结构设计(服务器端)
- iphone能够让中国程序员得到自由吗?
- Lucene多线程操作实现
- 读取EXCEL中的图片
- Hibernate对象三种状态:临时状态、持久状态和游离状态
- 读取Excel中的文本框(TextBox)内容及图片(Picture)
- IE图标右键只有创建快捷方式的彻底解决方法(右键为打开主页也已解决)
- cygwin make:command not found,make命令 找不到