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

标签 .net installation 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
    除了创建文件夹结构并将程序集放入其中之外,以上两种方法还有什么特别的作用吗?

    最佳答案

    我强烈建议使用现有方法(如您提到的方法),因为它们都受Microsoft支持和维护,并且将继续与将来的版本一起使用。

    快速浏览gacutil.exeProcess Monitor可以发现,除了复制文件之外,它还有更多其他功能:

  • 并发性问题(例如临时文件,锁定WINDOWS\assembly\GACLock.dat等)
  • 通知(例如HKLM\SOFTWARE\Microsoft\Fusion\GACChangeNotification\...)
  • 索引(例如HKLM\SOFTWARE\Microsoft\Fusion\NativeImagesIndex...)
  • 验证(例如强名,...)
  • System.EnterpriseServices中的包装器与this old blog post非常相似,并且应该可以正常工作。

    关于.net - 以编程方式将.NET程序集安装到GAC中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460793/

    相关文章:

    .net - 置于 GAC 中的程序集是否获得完全信任?

    .net - 在 .NET 框架中强制使用英语语言异常

    C# 如何正确删除事件处理程序代码?

    c# - 在 C#.NET 中设置 NTFS 权限

    asp.net - .NET 4.0 DataAnnotations GAC/EntityFramework 冲突

    powershell - 为什么我的 .NET 4.0 程序集不能使用 Powershell 注册到 GAC?

    javascript - 我没有从 Angular 前端访问后端 Controller 中的 api 路由。我做错了什么?

    directory - 在哪里安装 32 位和 64 位混合应用程序包

    git - 使用 pip 安装特定的 git commit

    R 已损坏,错误为 "dyld: Library not loaded: @rpath/libpcre.1.dylib"