VS 2013無法恢復包 - 包內容未實現 - 儘管VS/nuget似乎認爲它已成功恢復包。nuget恢復失敗,但手動工作
如果我手動卸載並重新安裝該軟件包的相同版本,它的工作原理應該如此。
赤裸裸的複製代碼可以是downloaded as a zip。這個攝製有一個
單一文件, 「packages.config」 一
單個項目中的
單一的解決方案,指定
單個包裝,「清風.edmbuilder -version 1.0.4「,包含單個文件,edmbuilder.cs
單個文件夾,「App_Start」,只含有
的.csproj的說,它應該有「edmbuilder.cs」,這是可以的,因爲
便有「edmbuilder.cs」的時候,包恢復。
當我編譯時,VS報告「edmbuilder.cs」丟失......並且確實缺少它。
但是,該軟件包已下載;我知道這是因爲構建產生一個包含「Breeze.EdmBuilder.1.0.4」的「包」文件夾,其中我看到「edmbuilder.cs」存在並且位置正確。
當我發出命令install-package breeze.edmbuilder -version 1.0.4
,報告的NuGet
'Breeze.EdmBuilder 1.0.4' 已安裝。 NugetRestoreFail已經有了'Breeze.EdmBuilder 1.0.4'的引用。
這個包AFAIK沒有錯。對於當我uninstall-package breeze.edmbuilder
,然後重新安裝install-package breeze.edmbuilder -version 1.0.4
,安裝工程和丟失edmbuilder.cs將出現在它所屬的「App_Start」文件夾中。
失敗是可重複的到位。
- 關閉解決方案
- 刪除edmbuilder.cs從 「App_Start」
- 刪除 「包」 的文件夾
- 選擇性地刪除了。鎖和bin和OBJ目錄
- 重新打開該解決方案,並重新建立
你會得到相同的失敗行爲......和手動卸載並重新安裝相同的能力。
FWIW,從.csproj中刪除對的引用edmbuilder.cs沒有任何影響。
無論我做什麼,我都必須手動卸載並重新安裝軟件包。
WTF!
p.s .:我正在使用VS 2013 Update 2 RC。我懷疑「RC」很重要,因爲這個問題引起了我的顧客的關注。你永遠不會知道。
p.p.s:這不是關於構建失敗,我不在乎這個解決方案永遠不會運行。你在這裏看到的是一個真正的應用程序的精簡版本,可以工作。唯一的問題是「爲什麼沒有恢復的文件?」
等一下。我讀過你的鏈接,它似乎表示恢復將具有與安裝相同的副作用(如更新.config文件,**添加代碼**等)。它接着說:「當其他開發商或構建服務器檢查出來的代碼,他會讓你有**完全相同的副作用碼減去包文件**。包恢復只需從向下的NuGet拉這些文件存儲庫,現在我們擁有了在這個項目上工作所需的一切。「這很混亂。你說的恢復不會有安裝的副作用? – Ward
其實我寫的是*安裝*包是什麼引入了副作用。這是*減去*承諾的實際包。軟件包恢復只需*將軟件包重新制作完畢。是的,我同意這是VS項目系統的副產品。然而,NuGet包不是簡單的程序集來引用。它們也可能包含安裝腳本,這些腳本可能無法在VS的上下文之外工作,例如構建服務器。如果您只是將Package Restore視爲將您從檢入包中解脫出來,那將更有意義。 – Kiliman
這是一篇博文,稱這是一個常見的誤解: http://jeffhandley.com/archive/2013/12/09/nuget-package-restore-misconceptions.aspx 添加到項目中的內容文件必須是與該項目簽入。假裝他們不是來自NuGet。他們現在是您的項目中可編輯的源文件。 二進制文件包的原因恢復創建的原因 - 沒有人願意來檢查第三方二進制文件到源代碼控制。 –