【问题标题】:How can you do a mass unload of Assemblies from GAC by PublicKeyToken?如何通过 PublicKeyToken 从 GAC 中大量卸载程序集?
【发布时间】:2011-09-09 14:22:17
【问题描述】:

是否可以从 GAC 中卸载所有具有特定 PublicKeyToken 的程序集?

我可以接受命令行(gacutil.exe 等)或通过 C# 的解决方案。

编辑:

仅供参考,我可以通过 Windows 资源管理器执行此操作,然后转到程序集文件夹并按公钥排序,然后他们选择所有有问题的并右键单击并说卸载。如果这是唯一的方法,那么请确认,否则可以“自动化”的替代方案会很好。谢谢。

【问题讨论】:

    标签: c# assemblies gac gacutil


    【解决方案1】:

    使用命令行和一点 C# 很容易:

    GacUtil /l  
    

    列出 CSV 行上的所有程序集。
    在 keytoken 上过滤它并将名称提供给 removelist.txt 用于

    GacUtil /ul removelist.txt
    

    【讨论】:

    • 是的,我想我可以做到,它仍然需要一些人工,很想知道是否有更好的东西,这仍然不容易自动化。
    • 也许 Powershell 对此有技巧,其他网站。但我认为这是相当自动化的。
    【解决方案2】:

    如果你喜欢Powershell,你可以使用这样的东西:

    & 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe' /L | 
      where { $_ -match '^  ([\w\.]+,.*)$' } |
      foreach {
        if ($matches[1].contains("PublicKeyToken=d7e1d90e83a016b1")) {
          & 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe' /u $matches[1]
        }
      }
    

    【讨论】:

      【解决方案3】:

      您可以使用GAC API 编写您自己的工具。 Here 是 API 的托管版本。

      【讨论】:

        猜你喜欢
        • 2010-12-14
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多