无法使用gacutil将程序集安装到全局程序集缓存(GAC)

时间:2015-02-14 10:48:16

标签: .net .net-assembly gac global-assembly-cache

我想在Windows Server 2008 R2上将程序集安装到全局程序集缓存(gac)。自上次Windows更新以来它无法正常工作。

例如,我采用AjaxControlToolkit:

首先我用工具sn检查它,之后,我尝试使用gacuil和-i选项使用gacutil安装它。命令提示符显示以下内容:

D:\lib>sn -v AjaxControlToolkit.dll

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly 'AjaxControlToolkit.dll' is valid

D:\lib>gacutil -i AjaxControlToolkit.dll
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Failure adding assembly to the cache: Strong name signature could not be verifie
d.  Was the assembly built delay-signed?

使用sn检查显示,程序集的一切正常,并且字符串是正确的。但是,gacutil无法验证强名称签名。

2 个答案:

答案 0 :(得分:0)

您的程序集可能会因错误提示而延迟签名。您可能正在使用sn.exe -Vr选项跳过验证。尝试以下操作并验证程序集而不跳过验证(请注意使用-vf而不是-v)。

sn.exe -vf AjaxControlToolkit.dll

gacutil没有跳过验证的原因可能是因为你的sn.exe是32位而gacutil.exe是64位还是相反。验证跳过可能会有所不同,具体取决于流程的位数。

如果程序集有延迟签名,请确保在将其添加到GAC之前对其进行签名。

答案 1 :(得分:-1)

  

D:\ lib \ 40> sn.exe -vf AjaxControlToolkit.dll

     

Microsoft(R).NET Framework强名称实用程序版本4.0.30319.1   版权所有(c)Microsoft Corporation。保留所有权利。

     

汇编' AjaxControlToolkit.dll'是有效的