2013-01-08 67 views
4

我有一個組件:SomeAssembly.dll爲什麼GACUtil聲稱向GAC安裝程序集,但實際上失敗了?

我有我的道路上GACUTIL的文件夾:C:\ Program Files文件(x86)的\微軟的SDK \的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中

爲什麼?

回答

8

當使用gacutil /l時,請不要使用.dll擴展名,它應正確報告您的程序集。

此外,我懷疑可能會有某種32/64位混合正在進行。當您通過Windows資源管理器查看C:\Windows\Assembly時,您可能只會看到32位GAC。

[更新:看起來像.NET 4個店GAC組件在C:\Windows\Microsoft.NET\assembly所以你只能看到CLR 2.0版組件在C:\Windows\assembly]

看(V2 CLR)的實際內容GAC目錄視圖它沒有在資源管理器外殼擴展 - 一個快速的方法來做到這一點是使用subst將驅動器的目錄映射並查看它通過,例如:

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

此外,請確保該程序集的名稱相匹配DLL的名稱。如果他們不這樣做,那麼你需要使用程序集的「正確」名稱而不是文件名「/ l」。 – Hugo

+0

此外,如果您想要從GAC中刪除dll,則在執行gacutil/u時,您需要關閉.dll擴展名 –

相關問題