使用 GAC
全局程序集缓存 (GAC) 是一种代码缓存,它在任何带有已安装的 CLR 的机器(例如已安装了 CFNET 的 Pocket PC)上都可用。旨在跨应用程序共享的程序集可以存储在这里,而其必须有一个强名称。注意,安装了 GAC 的程序集必须有匹配的程序集名称和文件名,不包括文件扩展名(因此 MyAssembly 必须与 MyAssemblydll 或 MyAssemblyexe 配对)。
将程序集安装在 GAC 中有什么好处?
• 一个共享的位置意味着基于 RAM 的安装不需要有重复的 DLL(同一版本且同一文件名)耗费宝贵的空间。
• 并行版本允许同一 DLL 名称的多个版本对 CFNET 应用程序可用。在编译时,程序集存储它们所依照生成的程序集版本信息,这意味着他们将永远使用相同的程序集版本运行。因此,即便是此 DLL 的更新的版本可用,程序集也会继续使用旧的 DLL,从而防止了任何类型的向下不兼容。
• 其他好处在于在桌面上使用 GAC,但不与压缩框架共享。
所有 CFNET 基类库都安装在 GAC 中,那么您还在等什么?您可能已经注意到了 Pocket PC 的 \Windows 目录中前缀为“GAC”的文件。CLR 将访问 Cgautilexe 实用工具来用关于安装了 GAC 程序集的信息更新 GAC。要将您的程序集安装到 GAC 中,首先用一个强名称为其签名,然后在您的应用程序部署过程中包括一个文本文件(扩展名为 GAC),如 CAB 文件。这个 GAC 文件需要放在 \Windows 目录中,而且应该用 ANSI 或 UTF-8(不用 Unicode)编码。
你把项目A换一个名字吧~可能与其它命名空间有冲突~即有同名
强名称由程序集的标识——其简单文本名称、版本号和区域性信息(如果提供)——加上公钥和数字签名组成。强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。Microsoft® Visual Studio NET® 和在 NET 框架 SDK 中提供的其他开发工具能够将强名称分配给一个程序集。强名称相同的程序集应该是相同的。
通过签发具有强名称的程序集,您可以确保名称的全局唯一性。强名称还特别满足以下要求:
强名称依赖于唯一的密钥对来确保名称的唯一性。任何人都不会生成与您生成的相同的程序集名称,因为用一个私钥生成的程序集的名称与用其他私钥生成的程序集的名称不相同。
强名称保护程序集的版本沿袭。强名称可以确保没有人能够生成您的程序集的后续版本。用户可以确信,他们所加载的程序集的版本出自创建该版本(应用程序是用该版本生成的)的同一个发行者。
强名称提供可靠的完整性检查。通过 NET 框架安全检查后,即可确信程序集的内容在生成后未被更改过。但请注意,强名称中或强名称本身并不暗含某一级别的信任,例如由数字签名和支持证书提供的信任。
在引用具有强名称的程序集时,您应该能够从中受益,例如版本控制和命名保护。如果此具有强名称的程序集以后引用了具有简单名称的程序集(后者没有这些好处),则您将失去使用具有强名称的程序集所带来的好处,并依旧会产生 DLL 冲突。因此,具有强名称的程序集只能引用其他具有强名称的程序集。
下面的方案说明了使用强名称对程序集签名及以后按照该名称引用它的过程。
使用以下方法之一创建具有强名称的程序集 A:
使用支持创建强名称的开发环境,例如 Visual Studio NET。
使用强名称工具 (Snexe) 创建加密密钥对,并使用命令行编译器或程序集链接器 (Alexe) 将该密钥对分配给程序集。NET 框架 SDK 同时提供 Snexe 和 Alexe。
开发环境或工具使用开发人员私钥对包含程序集清单的文件哈希签名。数字签名存储在包含程序集 A 的清单的可移植可执行 (PE) 文件中。
程序集 B 是程序集 A 的使用者。程序集 B 的清单的引用部分包括代表程序集 A 公钥的标记。标记是完整公钥的一部分,并且这种标记(而不是密钥本身)可用于节省空间。
公共语言运行库在程序集置于全局程序集缓存时验证强名称签名。当运行时强名称进行绑定时,公共语言运行库会将存储在程序集 B 的清单中的密钥与用于为程序集 A 生成强名称的密钥进行比较。如果 NET 框架安全检查通过并且绑定成功,则程序集 B 可保证程序集 A 的位未被篡改,而这些位实际来自程序集 A 的开发人员。
注意 此方案不处理信任问题。程序集除强名称外,还带有完整的 Microsoft® Authenticode® 签名。Authenticode 签名包括建立信任的证书。请注意,强名称不要求以这种方式为代码签名,这一点非常重要。事实上,用于生成强名称签名的密钥不必与用于生成 Authenticode 签名的密钥相同。
跟开发工具无关,是你的winform项目配置错了,请确保你的项目资源文件编译生成正确(Properties下的Resourcesresx文件)。截图中的后半句“或”提示,指的是应用程序集签名,见截图2。最省事的是删除根目录Properties下的Resourcesresx文件,或者自己打开
ResourcesDesignercs文件修改命名空间,应该是给修改了项目的"默认命名空间"(修改不完全)导致的,确保Properties下的Resourcesresx文件编译正确,命名空间必须和当前项目的一致,然后右键 “解决方案资源管理器” 项目名称,先清理(或自己删除根目录obj编译临时文件夹)后重新生成。
看在你的程序集名称还是“windowsApplication1”的份上,实在不会搞就重建个winform项目的解决方案,再把现有窗体文件拷贝到新项目重新编译吧。刚接触vs2、3天,我都不知道该怎么跟你解释好……
简明英汉词典 contain [kntein]vt包含; 容纳Whisky contains a large percentage of alcohol威士忌的酒精含量极高。控制, 抑制The little boy couldn't contain his urine any longer这个小孩再也忍不住小便了。 Google 网络词典 contain 隐藏摘要 包含 摘要 偶然内聚逻辑内聚过程内聚功能内聚communication 通信complement number 补码constrain 约束contain 包含correspond(corresponding) 相符合(相应的一致的) CPETT bbsncrecn - 相关网页 容纳 摘要 contain 包含,容纳 contaminate 污染 contemporary 同时代的 contend 竞争 content 使 满足,使满意 contest 比赛,争斗 contiguous 接触,邻近的 contort 扭歪,歪曲 >
如何去掉“为程序集签名”
for more information和for further information不可以替换,意思不一样。
for more information更多信息
例句:
1For more information about this statement, see BULK INSERT (Transact-SQL)
有关此语句的详细信息,请参阅BULKINSERT(Transact-SQL)。
2For more information, see Signing an Assembly with a Strong Name
有关更多信息,请参见使用强名称为程序集签名。
for further information进一步的信息;如果想做进一步了解
以上就是关于GAC是什么意思啊全部的内容,包括:GAC是什么意思啊、C#引用的集合不是强名是怎么回事、VS 创建窗体时出错。(里面有图……)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)