C#如何在GAC中注册汇编没有GacUtil?

我需要使用batch file在GAC中注册程序集。 有没有办法findGacUtil.exe的安装位置,或者有没有办法注册没有GacUtil程序集?

GacUtil没有安装SDK安装的框架安装 – 所以你不能保证它会在你安装的盒子上。

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

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

在您的发行版中包含一个GacUtil.exe的副本是一个不可取的解决scheme,因为它属于不同的许可证,并且您可能没有被授权重新发布它

你最好的办法是使用一个包装Publish.GacInstall的PowerShell脚本,比如这个

您可以通过执行以下步骤将一个DLL安装到GAC(全局程序集caching)中

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

这对于本地PowerShell来说只有很less的事情,而是从PowerShell实例化和使用.NET库

做一个iisreset

资源

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

重要的路线如下所示:

 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