你可以在哪里找到GACUtil?

13

我知道已经有很多人问同样的问题了,我阅读了所有相关帖子,但是我找不到gacutil.exe,我正在查看C:\WINDOWS\microsoft.net\Framework\v1.1.4322,我发现了gacutil.exe.config,但很明显它只是配置文件。我需要将一个dll包含到GAC中。

这是我一直在寻找exe的列表,但没有成功:

  • C:\Program Files\Microsoft.NET
  • C:\WINDOWS\microsoft.net\Framework\v1.1.4322
  • C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

提前谢谢。


1
Windows有一个搜索功能,你试过了吗? - MilkyWayJoe
我认为你在serverfault上会更有运气得到这个问题的解答。我已经标记了它,所以他们很快就会把它移动到那里。 - Chris Drappier
可能是重复的问题:如何将dll安装到GAC中 - cadrell0
@MilkyWayJoe 我尝试了,但搜索没有找到任何结果。 - Leonardo Raygoza
他的问题是如何定位实用程序,而不是如何将东西安装到GAC中。 - William Dwyer
[where is gacutil.exe?]的副本 (https://dev59.com/03A75IYBdhLWcg3wP2gg) - Anton Shepelev
6个回答

17

在任何Windows计算机中,您都可以在C:\Windows\assembly或%windir%\assembly下找到GAC。

GACUTIL -i文件名将文件注册到GAC,但不一定会定位文件到%windir%\assembly文件夹。这是一个虚拟文件夹,由SHFUSION.DLL控制,Windows资源管理器使用该插件来显示这些文件。

此处有进一步阅读

如果无法在命令提示符中简单地键入GACUTIL /?,则可以在Windows中导航到Windows目录的程序集子文件夹,并将dll文件拖放到其中。您需要是计算机的管理员才能执行此操作。

通常,为了访问此实用程序,我启动VS 2010命令提示符,因为它具有适当的%PATH%变量设置,以定位gacutil cmd。

在我的计算机上,我有4个副本...第一个位于此处。 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64

问题很可能是您尝试执行此操作的计算机上未安装1.1框架的框架SDK。 您可以在此处下载


非常感谢您的解释,它非常有用,我已经解决了这个问题。谢谢! - Leonardo Raygoza
1
感谢您提供使用VS命令提示符的技巧。非常有用。 - user489998

3
您可以使用Visual Studio命令提示符运行GACUtil。Visual Studio命令提示符会随Visual Studio一起自动安装。要运行该工具,请使用开发人员命令提示符(或Windows 7中的Visual Studio命令提示符)。有关更多信息,请参见Visual Studio命令提示符
在Windows 8.1中 - 在“开始”屏幕上,按CTRL + TAB打开应用程序列表,然后按V键。列表将包括所有已安装的Visual Studio命令提示符。(要打开“开始”屏幕,请按键盘上的Windows徽标键。) 选择开发人员命令提示符(或您想要使用的命令提示符)。
在Windows 8中 - 在“开始”屏幕上,按Windows徽标键+Z键。(要打开“开始”屏幕,请按键盘上的Windows徽标键。) 选择屏幕底部的应用程序视图图标,然后按V键。列表将包括所有已安装的Visual Studio命令提示符。 选择开发人员命令提示符(或您想要使用的命令提示符)。
在Windows 7中 - 选择“开始”,展开所有程序,然后展开Microsoft Visual Studio。 根据您安装的Visual Studio版本,选择Visual Studio工具、Visual Studio命令提示符或您想要使用的命令提示符。
GACUtil信息:https://msdn.microsoft.com/zh-cn/library/ex0ss12c(v=vs.110).aspx 示例命令:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>cd C:\Windows\Microsoft.N et\assembly\GAC_MSIL\elite.eai.importsvc.generic.fm\v4.0_2.4.3.0__f659f54317ad7e 73\
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Elite.EAI.ImportSvc.Generic.FM\v4.0_2 .4.3.0__f659f54317ad7e73>gacutil.exe /i "elite.eai.importsvc.generic.fm.dll" Microsoft(R) .NET Global Assembly Cache Utility。版本4.0.30319.1 版权所有(C) Microsoft Corporation。保留所有权利。
程序集已成功添加到缓存中。

2

获取 gacutil 的一种简单方法是从已经安装了它的机器上获取。您需要从该机器获取 gacutil.exegacutil.exe.config 文件。

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\
(or analogous location)

并且,从 1033 子目录返回 gacutlrc.dll

这里 例如是一个带有 gacutil 4.0.30319.0 的存档。这是一种比安装数百个文件的庞大的 Windows SDK 更为简洁和简单的分发方法。


这个答案也有助于那些已经下载了工具但没有安装Visual Studio本身的用户(例如使用Intellij Rider)。我之前并没有意识到GACUtil是这些工具的一部分。 - Madis Otenurm

2
在Windows 2012 R2服务器上,如果您没有权限安装Visual Studio或SDK,您可以使用powershell将程序集注册到GAC中。对我来说,这不需要任何特殊的安装。"最初的回答"
Set-location "C:\Temp"
 [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
 $publish = New-Object System.EnterpriseServices.Internal.Publish
 $publish.GacInstall("C:\Temp\myGacLibrary.dll")

1

C:\Windows\assembly 这是GAC,但它只引用程序集实际所在的位置。在这里可见仅表示已在GAC中注册。


0
如果您的应用程序是企业级应用程序,那么您的生产环境中不会有GacUtil(假设您正在使用Windows 2012 R2或更高版本)。因此,使用Gacutil将程序集注册到GAC中没有意义。您可以使用其他答案中列出的powershell中的GacInstall和GacRemove方法。这对我很有效。只需要一些时间来找出确切的语法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接