20

我创建了一个添加外部 Dll 引用的控制台应用程序。
现在我必须将我的外部 Dll 部署到我的程序集中。
当我试图在 GAC 中添加我的 dll 时。

  GACUTIL.EXE /i MyLibrary.dll  

将我的 dll 添加到程序集的命令,它向我显示错误

*gacutil is not recognized as an internal or external comma*

我该如何解决?

4

5 回答 5

15

对于Windows 10路径是: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin

于 2017-06-27T05:59:59.943 回答
8

如果您已经安装了 Visual Studio,那么您可以使用Developer Command Prompt而不是普通Command prompt的直接访问gacutil

你可以在Developer Command Prompt这里找到:

Start Menu > Visual Studio 20XX > Developer Command Prompt for VS20XX

于 2018-08-19T05:35:26.570 回答
3

“但是我如何在客户端服务器上部署我的 dll,因为他可能没有 Visual Studio”

如果我没记错的话,gacutil 也存在于 C:\windows\Microsoft.Net\some folder\

另一种方式:如果使用原始 .cmd => 您可以将 gacutil.exe 和 gacutil.exe.config 与您的脚本捆绑在一起。

另一种方式:如果您使用的是 Windows 安装程序,那么它内置了对 GACing 程序集的支持。

另外,请注意 x86 和 x64 程序集有不同的 GAC(如果您的程序集是 MSIL,请忽略)。

于 2012-09-12T11:04:57.207 回答
3

可能重复:GAC 32 位与 64 位 (至少从 .Net 3.0 开始,gacutil 不再是客户端操作系统的一部分,您需要使用正确的安装程序或安装 Windows SDK,这显然是矫枉过正)

于 2012-09-12T11:31:12.477 回答
2

我们运行 Windows Server 2016 的 Production Box 没有用于 Global-Assembly 缓存 (GAC) 的 MS SDK 工具!!!所以我复制了整个目录

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ 

从我的开发笔记本电脑(安装了 VS 2017 的 Windows 10)到我希望将我的 .dll 注册到我的生产服务器的全局程序集的生产服务器。
将 GACUtil.exe 从目录复制到另一台计算机

我需要注册的程序集是:_Net35scannersMonitor.dll,它是 x86 dotNet 2.0 和 _Net40scannersMonitor.dll,它是 x64 dotNet 4.x。

在我复制的 gacUtil 所在目录的提示下,我输入:

  gacutil -i D:\resource\Library\_Net35scannersMonitor.dll

  gacutil -i D:\resource\Library\_Net40scannersMonitor.dll

我使用相同的 gacUtil.exe(文件版本 4.6.1055.0)来完成这两项工作。他们最终都在正确的位置 dotnet2x86(C:\Windows\assembly) 和 dotnet4(C:\Windows\Microsoft.NET\assembly\GAC_MSIL) - 我不必使用 2 个不同的 gacUtil.exe。

结果:

x86 .dll 和 x64 .dll 分别去正确的程序集

结论:即使您的盒子没有安装 VS,您也可以从安装了 VS 的 PC 上复制您的 gacutil.exe 及其 bin。无需特殊下载/安装。然后您可以将复制的 gacutil 用于 x86 和 x64 程序集!!!

于 2019-08-06T16:56:24.303 回答