我正在Visual Studio Command Prompt 2010中运行GacUtil.exe,以便向GAC注册dll(CatalogPromotion.dll)。运行该实用程序后,它显示Assembly Successfully added to the cache
,并且运行gacutil /l CatalogPromotionDll
显示GAC包含程序集,但是当我从Windows资源管理器导航到C:\ WINDOWS \ assembly时,我看不到程序集。 为什么我无法从Windows资源管理器中看到WINDOWS \ assembly中的程序集,但我可以使用gacutil.exe看到它?
背景:这是我在VS Tools的命令提示符中输入的内容:
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 \ assembly中。
答案 0 :(得分:107)
那是因为您使用的是.NET 4.0版本的gacutil.exe。它将程序集存储在不同的 GAC中,即c:\ windows \ microsoft.net \ assembly中的那个。存储所有.NET 4.0程序集的位置。该文件夹没有shell扩展处理程序,文件夹按原样可见。您可以使用Windows资源管理器查看。您将看到GAC文件夹的内部结构。你找回你的装配应该没有任何问题,GAC并不是特别复杂。
如果程序集旨在供面向早期版本.NET的应用程序使用,那么您应该使用存储在C:\ Program Files \ Microsoft SDKs \ Windows \ v6中的.NET 2.0版本的gacutil.exe .0A \ BIN
答案 1 :(得分:2)
这是因为您安装到GAC中的程序集是针对4.0运行时编译的。 4.0 GAC程序集存储在c:\ windows \ microsoft.net \ assembly。
的不同位置接受的答案不正确。使用.NET 4.0 gacutil安装一个针对3.5或更早版本的运行时编译的程序集就可以了,并将程序集放在OP所期望的目录中,c:\ windows \ assembly。
答案 2 :(得分:1)
路径是 - > C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL,其中存储了.net 4.0版本的所有程序集