NuGet: One or more packages could not completely uninstalled

NuGet  管理員出現一個的警告訊息:「One or more packages could not completely uninstalled...Restart Visual Studio to finish uninstall.」但重啟 Visual Studio 之後仍無法令它消失。

問題

把專案的原始碼從 Git repo 移至 TFS repo 之後,發現有些透過 NuGet 加入參考的組件會找不到 DLL(Solution Explorer 中的組件參考項目出現黃色驚嘆號的警告圖示)。此時直覺反應是移除組件參考再重新加入:Solution Explorer 中對專案的 References 點右鍵 ➝ Manage NuGet Packages,先把出問題的套件移除,然後再裝回來。可是移除套件之後,NuGet 管理員一直顯示警告訊息,說某些套件無法完全移除,必須重啟 Visual Studio 才能移除乾淨。如下圖:


重啟 Visual Studio 之後,打開 NuGet 管理員,警告訊息仍在。

原因

把專案原始碼加入 TFS repo 時,我沒有注意到 TFS 自動排除了 DLL 檔案,於是專案的 packages 目錄下的有些 DLL 檔案不復存在,導致專案無法通過編譯,且移除 NuGet 套件時出現上述狀況。

解法

把 Solution 所在目錄下的 packages 資料夾整個從 TFS repo 中刪除,然後利用 NuGet 的 Package Restore 功能把所有欠缺的套件重新下載回來,那個「One or more packages could not completely uninstalled...」警告訊息就會消失。

例如,在 Solution Explorer 中對專案的 References 點右鍵 ➝ Manage NuGet Packages。接著開啟的 NuGet 管理員就會發現原先參考的套件不存在,並提示你可以點 Restore 按鈕來重新取得套件,如下圖:


重新取得所有套件之後,組件參考失效的問題解決了,NuGet 管理員中的警告訊息也消失了。

(還是喜歡 Git 多一些...)
Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor