繁体   English   中英

C# 如何在没有 GacUtil 的情况下在 GAC 中注册程序集?

[英]C# how to register assembly in the GAC without GacUtil?

我需要使用批处理文件在 GAC 中注册一个程序集。 有没有办法找到GacUtil.exe的安装位置,或者有没有办法在没有 GacUtil 的情况下注册程序集?

你最好的选择是使用一个包装Publish.GacInstall的 powershell 脚本,比如这个🕗

GacUtil 不与框架安装一起安装,仅与 SDK 安装一起安装 - 因此您不能保证它会在您正在安装的机器上。

这在您的批处理文件中不起作用,但如果您自己开发了应用程序,则可以使用下面描述的 GacInstall 方法:
http://msdn.microsoft.com/en-us/library/system.enterpriseservices.internal.publish.gacinstall.aspx

或者,我建议生成一个 msi 文件来部署应用程序。 教程在这里:
http://www.dreamincode.net/forums/topic/58021-deploying-ac%23-application-visual-studio-setup-project/

在您的发行版中包含 GacUtil.exe 的副本将是一个不可取的解决方案,因为它具有不同的许可证,并且您可能没有获得重新分发它的许可

您可以通过执行以下操作将 dll 安装到 GAC(全局程序集缓存)中

[Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices") | Out-Null 
[System.EnterpriseServices.Internal.Publish] $publish = new-object System.EnterpriseServices.Internal.Publish
$publish.GacInstall(<<FullFilePathToTheDll>>)

这与本机 PowerShell 无关,而是与从 PowerShell 实例化和使用 .NET 库有关

做一个iisreset

来源

我使用了 InnoSetup 并创建了一个包含我的程序集的安装。

重要的一行如下所示:

Source: "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"; DestDir: "{app}"; StrongAssemblyName: "WinSCPnet, Version=1.3.7.7333, Culture=neutral, PublicKeyToken=2271ec4a3c56d0bf, ProcessorArchitecture=MSIL"; Flags: ignoreversion gacinstall uninsnosharedfileprompt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM