以编程方式将.NET程序集安装到GAC中的方法

Ken*_*Ken 10 .net install gac global-assembly-cache

我需要创建一个小应用程序或脚本来将.NET程序集安装到GAC中.我读过有几种方法可以做到这一点,包括:

  • 运用 gacutil.exe
  • 执行以下代码行:

    new System.EnterpriseServices.Internal.Publish().GACInstall("Foo.dll");

但是,如果我刚刚在机器上创建了相应的目录并将程序集复制到该目录中会发生什么?GAC目录的结构如下: C:\Windows\assembly\GAC_MSIL\Foo\<version#>__<public token>\Foo.dll

除了创建文件夹结构并将组件放入其中之外,上述两种方法是否有任何特殊之处?

Jos*_*ger 11

强烈建议使用现有方法(如您提到的方法),因为它们都由Microsoft支持和维护,并将继续使用未来的版本.

gacutil.exe使用Process Monitor快速了解一下,除了复制文件之外,还有更多内容:

  • 并发问题(例如临时文件,锁定WINDOWS\assembly\GACLock.dat等)
  • 通知(例如HKLM\SOFTWARE\Microsoft\Fusion\GACChangeNotification\...)
  • 索引(例如HKLM\SOFTWARE\Microsoft\Fusion\NativeImagesIndex...)
  • 验证(例如强名称......)

包装器System.EnterpriseServices这篇旧博客文章非常相似,应该可以正常工作.


Jas*_*win 5

我们最近不得不在企业环境中为10个服务器执行此操作.我们使用Wix构建了一个非常简单的MSI(认真 - 5分钟工作)并通过组策略发布到所有服务器(和开发盒).