2011-06-06 32 views
2

有沒有辦法從GAC中卸載所有具有特定PublicKeyToken的程序集?如何通過PublicKeyToken從GAC批量卸載組件?

我很好,解決方案是命令行(gacutil.exe等)或通過C#。

編輯:

僅供參考,我可以通過Windows資源管理器做到這一點,要裝配的文件夾和排序公鑰和他們選擇的問題,並右擊所有的人,說卸載。如果這是唯一的方法,那麼請確認,否則可能是「自動化」的替代品會很好。謝謝。

回答

3

通過命令行和一個小C#很容易:

GacUtil /l 

列出了CSV行中的所有組件。
過濾器本就keytoken,如果你喜歡Powershell,你可以使用類似這樣喂名到removelist.txt

GacUtil /ul removelist.txt 
+0

是的我想我可以做到這一點,它仍然需要一些手動的努力,想知道是否有更好的東西,這仍然不容易自動化。 – 2011-06-06 20:35:18

+0

也許Powershell有這個,其他網站的技巧。但我會稱之爲合理的自動化。 – 2011-06-06 20:41:47

1

& '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] 
    } 
    } 
0

您可以使用GAC API編寫自己的工具。 Here是API的管理版本。