为什么GACUtil声称要将程序集安装到GAC但实际上却失败了?

时间:2013-01-08 15:18:06

标签: gac

我有一个程序集: SomeAssembly.dll

我的路径上有GACUtil文件夹: C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0工具

我切换到SomeAssembly.dll所在的文件夹,执行

GACUtil /i SomeAssembly.dll

回复是:

Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

我检查 C:\ Windows \ Assembly ,但我的程序集似乎不在那里。

我返回到我的命令窗口(我注意到管理员权限)并输入:

GACUtil /l SomeAssembly.dll

并且回复确认......

Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:

Number of items = 0

所以似乎SomeAssembly.dll不在GAC中

为什么吗

1 个答案:

答案 0 :(得分:8)

使用.dll时请取消gacutil /l扩展程序,并且应正确报告您的程序集。

另外,我怀疑可能会出现某种32/64位混音。当您通过Windows资源管理器查看C:\Windows\Assembly时,您可能只会看到32位GAC。

[更新:看起来像.NET 4在C:\Windows\Microsoft.NET\assembly中存储GAC程序集,因此您只能在C:\Windows\assembly中看到CLR v2.0程序集。]

要查看(v2 CLR)GAC目录的实际内容,请在没有Explorer shell扩展的情况下查看它 - 快速执行此操作的方法是使用subst将驱动器映射到目录并通过该视图查看,例如:

C:\>subst G: c:\Windows\assembly
C:\>start G: