如何通过PublicKeyToken从GAC大规模卸载程序集?

时间:2011-06-06 20:24:43

标签: c# assemblies gac gacutil

无论如何从GAC卸载具有特定PublicKeyToken的所有程序集?

我对解决方案是命令行(gacutil.exe等)或通过C#没问题。

编辑:

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

3 个答案:

答案 0 :(得分:3)

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

GacUtil /l  

列出CSV行上的所有装配 在keytoken上对此进行过滤,并将名称提供给removelist.txt

GacUtil /ul removelist.txt

答案 1 :(得分:1)

如果您喜欢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]
    }
  }

答案 2 :(得分:0)

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