【问题标题】:gacutil is not recognized as an internal or external command?gacutil 不被识别为内部或外部命令?
【发布时间】:2012-09-12 10:40:28
【问题描述】:

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

  GACUTIL.EXE /i MyLibrary.dll  

将我的 dll 添加到 Assembly 中的命令,它显示错误

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

我该如何解决?

【问题讨论】:

  • 提供 gacutil.exe 的完整路径?
  • 输入前"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe"
  • 我已经尝试过使用 Visul Studio 命令提示符工作正常。但是我如何在客户端服务器上部署我的 dll,因为他可能没有 Visual Studio
  • 如果你有答案,请告诉
  • Gacutil.exe 是一个 Windows SDK 工具,它不会在目标机器上可用。而是创建一个安装项目。

标签: c# console


【解决方案1】:

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

【讨论】:

  • 该位置没有“Microsoft SDKs”文件夹。
【解决方案2】:

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

你可以在这里找到Developer Command Prompt

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

【讨论】:

    【解决方案3】:

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

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

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

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

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

    【讨论】:

    • 在我的客户端服务器 "C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin" 是空的,没有 gac 文件
    【解决方案4】:

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

    【讨论】:

    • 真的没有简单的方法来获得一个工具来显示 GAC 中的内容吗?
    【解决方案5】:

    我们运行 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 注册到生产服务器的全局程序集的生产服务器。

    我需要注册的程序集是:_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。

    结果:

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

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 2021-02-08
      • 1970-01-01
      • 2014-10-21
      • 2014-02-08
      • 2017-08-22
      • 1970-01-01
      • 2022-12-31
      • 2014-04-29
      相关资源
      最近更新 更多