方法以编程方式安装.NET程序集到GAC(Methods to programmatically i

2019-07-19 00:07发布

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

  • 使用gacutil.exe
  • 执行下面的代码行:

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

不过,如果我刚刚创建的机器上相应的目录和复制装配到该目录中会发生什么? 所述GAC目录的结构如下: C:\Windows\assembly\GAC_MSIL\Foo\<version#>__<public token>\Foo.dll

做上述两种方法做什么特别的,除了创建文件夹结构,将组件放置到了吗?

Answer 1:

强烈建议使用现有方法(如你提到的那些),因为它们都是由微软支持和维护,并会继续与未来版本中的工作。

快速浏览一下gacutil.exe与进程监视器显示,有超过只是文件的拷贝更给它一点点:

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

在包装System.EnterpriseServices非常相似, 这个老博客帖子和应该只是罚款。



Answer 2:

最近,我们必须为在企业环境中的服务器10S做到这一点。 我们使用维克斯建立一个非常简单的MSI(严重 - 第5分钟的工作),并发布到通过组策略的所有服务器(和DEV框)。



文章来源: Methods to programmatically install a .NET assembly into the GAC