我需要创建一个小应用程序或脚本来将.NET程序集安装到GAC中。我读过有几种方法可以做到这一点,包括:
gacutil.exe
执行以下代码行:
new System.EnterpriseServices.Internal.Publish().GACInstall("Foo.dll");
但是,如果我只是在机器上创建了相应的目录并将程序集复制到该目录中会发生什么? GAC目录的结构如下:C:\Windows\assembly\GAC_MSIL\Foo\<version#>__<public token>\Foo.dll
除了创建文件夹结构并将程序集放入其中之外,上述两种方法是否有任何特殊之处?
答案 0 :(得分:11)
我强烈建议使用现有方法(例如您提到的方法),因为它们都受Microsoft支持和维护,并将继续与未来版本一起使用。
使用Process Monitor快速查看gacutil.exe
表明,除了复制文件之外,还有更多内容:
WINDOWS\assembly\GACLock.dat
等)HKLM\SOFTWARE\Microsoft\Fusion\GACChangeNotification\...
)HKLM\SOFTWARE\Microsoft\Fusion\NativeImagesIndex...
) System.EnterpriseServices
中的包装器与this old blog post非常相似,应该可以正常工作。
答案 1 :(得分:5)
我们最近不得不在企业环境中为10个服务器执行此操作。我们使用Wix构建了一个非常简单的MSI(认真 - 5分钟工作)并通过组策略发布到所有服务器(和开发盒)。