2014-05-13 98 views
2

今天我遇到了一個問題,花了我一點時間才弄清楚,因爲我對TFS中的源代碼控制項目中的Enable NuGet Package Restore工作方式有明顯的誤解。因此,首先讓我解釋一下我上週花了多少錢解決問題。Visual Studio通過TFS修復了Nuget包

在我們的TFS服務器上,我爲持續集成創建了一個構建定義。當源代碼簽入時,構建服務器開始編譯源代碼,然後由於無法獲取NuGet包而失敗。我最初以爲這是因爲Enable NuGet Package Restore被禁用,所以我在解決方案級別打開它並重新提交我的代碼。構建繼續失敗。如果沒有管理員訪問構建服務器的虛擬化實例,並且管理員最近陷入困境,那麼讓我繼續前進,並決定在幾周內我會處理它,當時我的Sprint和他的Sprint變得更加輕鬆。啓動構建服務器並不是必須的。但是我確實刪除了本地映射到TFS中的分支,刪除本地目錄,重新映射源代碼並執行全新獲取並重新編譯源代碼,沒有任何問題。 NuGet包下載得很好。

今天,我們有一個新僱傭加入團隊。他從TFS中取出一份新的副本,遇到一些SlowCheetahfor transforming our WPF App Configs)NuGet失敗。今天我們花了很多時間試圖弄清楚爲什麼他不能正確地拖拽文件。過了一會兒,我右鍵點擊他的解決方案,注意到Enable NuGet package Restore選項可用。即使在我的解決方案中,我已經啓用了它,但他的解決方案沒有成立。我啓用它,立即編譯他的解決方案沒有錯誤。

現在回到主要問題,如果我啓用解決方案來恢復軟件包,爲什麼我必須在另一個盒子上重新啓用它?我的設想是,通過確保在所有框的設置中啓用Allow NuGet to download missing packages during build選項,Visual Studio會自動下載從我的TFS源代碼中缺失的NuGet包。這讓我感到困惑,如果NuGet在存儲在TFS中的項目中使用包時如何工作(並恢復),我將非常感激。我們沒有在我們的TFS簽入中包含任何軟件包,因爲我通過該功能自動爲該項目工作。

最後,我想知道這是爲什麼我的構建服務器無法運行我的構建定義。我遇到了NuGet錯誤,我不知道如何告訴構建定義來下載NuGet包。這是我需要做的修改構建模板,添加一個序列來下載NuGet包之前運行MSBuild什麼的?

在此先感謝。

編輯1我還想提一下,NuGet .targets文件也包含在TFS分支中。

回答

1

這就是所謂的軟件包恢復許可,對於IDE,您需要爲每個用戶執行此操作。有一種方法可以覆蓋每臺機器,但每個用戶都更容易。

對於服務器可以使用EnableNuGetPackageRestore環境變量中的「真」

值查詢更多:http://docs.nuget.org/docs/reference/package-restore

+0

謝謝,我會做EnableNuGetPackageRestore一些研究,看看能否解決和報告背部。 –

相關問題