我有一个程序集: 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中
为什么吗
答案 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: