我创建了一个添加外部 Dll 引用的控制台应用程序。
现在我必须将我的外部 Dll 部署到我的程序集中。
当我试图在 GAC 中添加我的 dll 时。
GACUTIL.EXE /i MyLibrary.dll
将我的 dll 添加到程序集的命令,它向我显示错误
*gacutil is not recognized as an internal or external comma*
我该如何解决?
对于Windows 10路径是: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
如果您已经安装了 Visual Studio,那么您可以使用Developer Command Prompt而不是普通Command prompt
的直接访问gacutil
。
你可以在Developer Command Prompt
这里找到:
Start Menu > Visual Studio 20XX > Developer Command Prompt for VS20XX
“但是我如何在客户端服务器上部署我的 dll,因为他可能没有 Visual Studio”
如果我没记错的话,gacutil 也存在于 C:\windows\Microsoft.Net\some folder\
另一种方式:如果使用原始 .cmd => 您可以将 gacutil.exe 和 gacutil.exe.config 与您的脚本捆绑在一起。
另一种方式:如果您使用的是 Windows 安装程序,那么它内置了对 GACing 程序集的支持。
另外,请注意 x86 和 x64 程序集有不同的 GAC(如果您的程序集是 MSIL,请忽略)。
可能重复:GAC 32 位与 64 位 (至少从 .Net 3.0 开始,gacutil 不再是客户端操作系统的一部分,您需要使用正确的安装程序或安装 Windows SDK,这显然是矫枉过正)
我们运行 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 程序集!!!