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

问题描述

| 无论如何,是否要从GAC卸载所有具有特定PublicKeyToken的程序集? 我可以通过命令行(gacutil.exe等)或通过C#解决方案。 编辑: 仅供参考,我可以通过Windows资源管理器执行此操作,然后转到Assembly文件夹并按公钥排序,然后他们选择所有有问题的文件,然后右键单击并说卸载。如果这是唯一的方法,那么请确认,否则可能是“自动”的替代方法会很好。谢谢。     

解决方法

        使用命令行和一些C#,很容易:
GacUtil /l  
列出CSV行上的所有程序集。 在按键令牌上对此进行过滤,并将名称提供给
removelist.txt
GacUtil /ul removelist.txt
    ,        如果您喜欢
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]
    }
  }
    ,        您可以使用GAC API编写自己的工具。这是API的托管版本。