问题描述
|
无论如何,是否要从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的托管版本。