2010-06-16 37 views
60

我在Visual Studio命令提示符2010中運行GacUtil.exe,將一個dll(CatalogPromotion.dll)註冊到GAC。運行該實用程序後,它說Assembly Successfully added to the cache,並且正在運行gacutil /l CatalogPromotionDll顯示GAC包含程序集,但從Windows資源管理器導航到C:\ WINDOWS \程序集時無法看到程序集。 爲什麼我無法從Windows資源管理器中看到WINDOWS \ assembly中的程序集,但是我可以使用gacutil.exe來查看它?Gacutil.exe成功添加程序集,但在程序集中不能查看程序集。爲什麼?


背景:這是我鍵入到命令提示符VS工具:

 

    C:\_Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin 
    \Debug>gacutil /i CatalogPromotionDll.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:\_Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin 
    \Debug>gacutil /l CatalogPromotionDll 
    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: 
     CatalogPromotionDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9188a175 
    f199de4a, processorArchitecture=MSIL 

    Number of items = 1 

但是,大會並沒有使用C顯示:\ WINDOWS \組裝。

回答

103

這是因爲您使用的是.NET 4.0版本的gacutil.exe。它將程序集存儲在不同的 GAC中,該程序位於c:\ windows \ microsoft.net \ assembly中。所有.NET 4.0程序集都存儲在哪裏。沒有外殼擴展處理程序,這些文件夾是可見的。您可以使用Windows資源管理器查看,您會看到GAC文件夾的內部結構。你不應該遇到任何麻煩,找到你的組裝,GAC並不特別複雜。

如果程序集旨在被定位到早期版本的.NET的應用程序使用,那麼您應該使用存儲在C:\ Program Files \ Microsoft SDK \ Windows \中的gacutil.exe的.NET 2.0版本。 v6.0A \ bin

+0

的組件旨在通過與COM VB6的應用使用。我嘗試在'\ v7.0.A \ bin'中使用gacutil.exe的3.5版本,但該版本的實用程序無法安裝.NET 4.0程序集。 – 2010-06-16 17:59:25

+1

VB6不關心你使用的.NET版本。它將在.NET 4.0中正常工作。您可能想要開始考慮如何將其部署到目標機器上。沒有可用的gacutil.exe,您必須創建一個安裝項目。通過使用Regasm.exe/codebase選項來調試時避免GAC麻煩。 – 2010-06-16 18:03:43

+0

感謝您的意見。你能指點一下我可以閱讀更多關於regasm.exe/codebase的方向嗎?我一直在考慮與部署相關的問題,並提出了一個很好的觀點,gacutil.exe在那裏不可用。我只是試圖在VB6應用程序中使用.NET組件時看到如何完成這個任務。 – 2010-06-16 18:08:25

2

這是因爲要安裝到GAC中的程序集是針對4.0運行時編譯的。 4.0 GAC程序集存儲在不同位置c:\ windows \ microsoft.net \ assembly中。

接受的答案不正確。使用.NET 4.0 gacutil來安裝一個以3.5或更早版本爲目標的編譯的程序集就可以工作得很好,並將程序集放在OP所期望的目錄c:\ windows \ assembly中。

1

路徑爲 - > C:\的Windows \ Microsoft.NET \組件\ GAC_MSIL其中所有的組件被存儲用於.NET 4.0版本