2011-06-21 91 views
14

我想刪除整個nuget軟件包,並將其徹底安裝到我的項目中。Nuget Clean Package刪除/安裝

不幸的是,由於某種原因,它跳過了刪除已被「修改」的文件,然後跳過將它們放到項目中重新安裝,因爲它們已經存在。

有沒有可以設置爲無條件刪除nuget包的每一個痕跡的標誌,或者覆蓋所有現有的文件?

謝謝。

回答

11

不幸的是,目前,NuGet沒有做到你想要的。在卸載過程中,NuGet只會刪除未被修改的內容文件。正如您注意到的那樣,更新過程不會更新修改過的文件。

Uninstall-Package命令確實有一個-Force選項,但即使存在依賴於此的其他程序包,也會「強制」卸載。

我們當然可以將此作爲一個問題進行歸檔,並且可能將其合併到未來的版本中。

另一種選擇是創建PowerShell腳本,該腳本將枚舉包的內容,然後允許您刪除所有內容文件。我會看看是否有一個簡單的方法來做到這一點。

順便說一句:也許你可以找出一個更好的方式來擴展現有的內容文件,而不是直接修改它。特別是因爲你在更新包的時候正在失去你的改變。

+0

我也有這個問題。事情是,我沒有真正修改任何文件內容。我所做的只是將文件添加到svn存儲庫。我想任何SVN添加到文件的屬性都被解釋爲修改。這使得對於任何使用源代碼管理系統的人來說,使用nuget真的很不方便。 – Sean

+2

這個答案在過去15個月內有所變化嗎? –

+0

@PatrickSzalapski yes - 請參閱我的回答 –

3

NuGet 1.6版具有刪除包功能! http://docs.nuget.org/docs/release-notes/nuget-1.6

如果擴展的更新失敗(signatur mismatch),只需卸載並重新安裝即可。這是一個已知的問題。

+4

您引用的頁面似乎並不指向'刪除包函數',你能解釋一下你正在談論的是什麼'已知問題',以及v1.6和更高版本的哪一方面 - 現在你的答案是善意的,很難從 –

6

你現在可以做你想做的! (最後)

你需要先更新到最新的NuGet(我認爲這個功能是在2013年4月左右添加的)。通過轉到Tools > Extensions and Updates並點擊Updates來更新nuget。

然後-FileConflictAction參數將允許您覆蓋文件。

Install-Package Microsoft.jQuery.Unobtrusive.Validation -Version 2.0.30506.0 -FileConflictAction Overwrite 

PowerShell Command Reference for Install-Package

0

我覺得這發生在我身上了幾次。去應該是你的項目的根目錄的packages.config文件,並刪除叛亂分子(在你的情況下,包的行:SignalR)。這將告訴NuGet該軟件包從未安裝過。

現在您將能夠通過存儲庫重新安裝,然後卸載它,以便一切都恢復到您陷入混亂之前的狀態。我不確定它是如何發生的。

相關問題