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