Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Gacutil.exe已成功添加程序集,但无法在资源管理器中查看程序集。为什么?_.net_Windows_Assemblies_Gac_Gacutil - Fatal编程技术网

.net Gacutil.exe已成功添加程序集,但无法在资源管理器中查看程序集。为什么?

.net Gacutil.exe已成功添加程序集,但无法在资源管理器中查看程序集。为什么?,.net,windows,assemblies,gac,gacutil,.net,Windows,Assemblies,Gac,Gacutil,我正在Visual Studio命令提示符2010中运行GacUtil.exe,以便向GAC注册dll(CatalogPromotion.dll)。运行该实用程序后,会显示程序集已成功添加到缓存中,运行gacutil/l CatalogPromotionDll会显示GAC包含该程序集,但从WINDOWS资源管理器导航到C:\WINDOWS\Assembly时,我看不到该程序集为什么我不能在WINDOWS资源管理器中的WINDOWS\assembly中查看程序集,但我可以使用gacutil.exe

我正在Visual Studio命令提示符2010中运行GacUtil.exe,以便向GAC注册dll(CatalogPromotion.dll)。运行该实用程序后,会显示
程序集已成功添加到缓存中
,运行
gacutil/l CatalogPromotionDll
会显示GAC包含该程序集,但从WINDOWS资源管理器导航到C:\WINDOWS\Assembly时,我看不到该程序集为什么我不能在WINDOWS资源管理器中的WINDOWS\assembly中查看程序集,但我可以使用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:\\u Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin \Debug>gacutil/i CatalogPromotionDll.dll Microsoft(R).NET全局程序集缓存实用程序。版本4.0.30319.1 版权所有(c)微软公司。版权所有。 程序集已成功添加到缓存 C:\\u Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin \调试>gacutil/l CatalogPromotionDll Microsoft(R).NET全局程序集缓存实用程序。版本4.0.30319.1 版权所有(c)微软公司。版权所有。 全局程序集缓存包含以下程序集: CatalogPromotionDll,版本=1.0.0.0,区域性=中性,PublicKeyToken=9188a175 f199de4a,处理器架构=MSIL 项目数量=1
但是,程序集不会显示在C:\WINDOWS\assembly中。

这是因为您使用的是.NET 4.0版本的gacutil.exe。它将程序集存储在不同的GAC中,即c:\windows\microsoft.net\assembly中的GAC。存储所有.NET 4.0程序集的位置。该文件夹没有shell扩展处理程序,文件夹按原样可见。您可以使用Windows资源管理器查看。您将看到GAC文件夹的内部结构。你应该不会有任何困难找到你的汇编回来,GAC不是特别复杂


如果该程序集将由目标为.NET早期版本的应用程序使用,则应使用存储在C:\Program Files\Microsoft SDK\Windows\v6.0A\bin中的.NET 2.0版本的gacutil.exe。这是因为要安装到GAC中的程序集是针对4.0运行时编译的。4.0 GAC程序集存储在不同的位置c:\windows\microsoft.net\assembly


公认的答案是错误的。使用.NET 4.0 gacutil安装针对3.5或更早版本运行时编译的程序集工作正常,并将程序集放置在OP预期的目录c:\windows\assembly中

路径是->C:\Windows\Microsoft.NET\assembly\GACmsil,其中存储了.NET 4.0版本的所有程序集

该程序集将由具有COM的VB6应用程序使用。我尝试在
\v7.0.A\bin
中使用gacutil.exe的3.5版本,但该版本的实用程序无法安装.NET 4.0程序集。VB6不关心您使用的.NET版本。它可以与.NET4.0配合使用。您可能需要开始考虑如何在目标机器上部署此功能。没有可用的gacutil.exe,您必须创建一个安装项目。使用Regasm.exe/codebase选项进行调试时,避免了GAC的麻烦。谢谢您的建议。你能为我指出一个方向,让我可以阅读更多关于regasm.exe/codebase的信息吗?我一直在考虑与部署相关的问题,您提出了一个很好的观点,即gacutil.exe在那里不可用。我只是想了解一下在VB6应用程序中使用.NET组件时应该如何做到这一点。MSDN库文章对此进行了详细的描述。没什么,它只是记录DLL所在的目录。在目标机器上的GAC中安装它是避免COM DLL地狱的明智之举。设置项目很容易。非常感谢@Hans Passant。。你救了我一天:)