将程序集安装到全局程序集缓存(GAC)中

8

我尝试使用new System.EnterpriseServices.Internal.Publish().GACInstall("Foo.dll");将程序集安装到GAC中,但我无法在c:\windows\assembly\gac_msil文件夹中找到它。同时我也没有收到securityexception异常信息。请问有谁能帮助我吗?

1个回答

11

首先,请确保已签名。因为您没有收到任何异常,我假设它已经签名了。此外,如果它是一个 .net 4.0 的程序集,它将被GAC在一个新的位置上 @ %windir%\Microsoft.NET\assembly\。

更多信息请参见:.NET 4.0有一个新的GAC,为什么?

更新:程序集签名

右键单击该程序集项目并进入“属性”。在“项目属性”屏幕上选择“签名”选项卡。勾选“签名程序集”并在“选择强名称密钥文件”中选择“新建”。这将打开一个对话框,在其中您必须指定密钥名称。我通常使用解决方案名称作为我的密钥名称。您也可以为密钥设置密码(根据您的喜好)。完成后,在对话框上点击“确定”,然后构建您的项目。现在尝试再次将其GAC。

快速建议:如果您在项目中有多个需要GAC的程序集,可以共享同一个密钥文件,而不是为每个程序集生成一个新的密钥文件。我通常将我的密钥文件放在与我的解决方案文件相同的位置,并在解决方案中的项目之间共享它。


谢谢您提供这条信息。我有.net3.5,并且在Windows资源管理器(C:\windows\assembly)中查找了一下,但没有找到它。但是我不太清楚签名的事情。您能告诉我如何对托管的DLL进行签名吗? - Muthukumar Palaniappan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接