2012-08-06 139 views
2

我們最近使用NuGet向我們的項目添加了一些依賴項。爲了將二進制文件保留在版本控制系統之外,我啓用了軟件包恢復功能,並將生成的.nuget文件夾添加到存儲庫。此外,依賴項目文件夾中的RestorePackages選項設置爲true,Import-標記爲nuget.targets沒有NuGet的NuGet包恢復許可

因此,在我的機器上安裝了NuGet並在我的VS設置中啓用了軟件包恢復功能後,它們都能正常工作。但是,當我想使用此設置來安裝其他機器上的依賴關係時,我遇到了一些問題。

我的印象是,包括nuget.exe在內的一個優點可以讓我在不需要安裝NuGet的機器上使用它。但是,在閱讀article on consent後,我認爲它實際上失敗的原因是這些機器沒有在其設置中啓用程序包恢復功能 - 顯然,他們在技術上甚至不知道NuGet。

在沒有安裝NuGet的計算機上啓用軟件包恢復的首選方法是什麼?實際上沒有安裝NuGet是除構建服務器之外的有效選項?

或者理想情況下,如果NuGet沒有自行安裝,是否有方法可以在解決方案中默認啓用軟件包恢復功能,因此用戶無法設置該設置? (其實,我能想到的設置腳本,創建一個NuGet.Config%AppData&\NuGet的)

+0

'Install-Package NuGetEnablePackageRestore'爲我工作! – mikey 2012-11-29 10:32:35

回答

2

試試這個:

Install-Package NuGetEnablePackageRestore 

或檢查package(將其解壓縮)的內容,你會發現一些有趣的東西那會幫助你(例如,有一種從MSBuild中設置環境變量的方法)。登錄到NuGet後,您可以在瀏覽器中下載該軟件包。

+0

謝謝,這基本上是我現在所做的。比較該軟件包的內容與生成的'.nuget'內容有點令人失望,因爲所有改變的都是'RestoreCommand'標籤,它在運行NuGet之前設置了環境變量。但我現在在我們的項目中使用了這個想法,它似乎工作正常。起初,我嘗試使用基於'%AppData%\ NuGet'存在的條件來創建它,但是它也是使用包含的'NuGet.exe'創建的,所以這是行不通的。最後我只是永久啓用它,如果遇到任何問題,我會想到另一種解決方案。 – poke 2012-08-07 13:12:43

1

「或者理想情況下,如果NuGet沒有自行安裝,那麼默認情況下是否可以從解決方案中啓用軟件包恢復,因此用戶無法設置該設置?

通過設置安裝的NuGet並啓用同意另一種方法是設置以下的環境變量:

set EnableNuGetPackageRestore=true 
+0

謝謝,但理想情況下,我不想在開發人員的機器上完成任何手動步驟。因此,手動設置環境變量並不比安裝NuGet並通過設置啓用同意更好。一切都應該開箱即用。 – poke 2012-08-07 13:09:06

0

如果EnableNuGetPackageRestore(由亞歷山大·翁提到的)變量作爲MSBuild的腳本(我強烈懷疑emmited物業它以這種方式工作,但現在不能檢查) - 您可以調整您的項目或sln以將此附加屬性設置爲true。

無論如何,according to this您應該至少有nuget.exe作爲每個開發者的控制檯管理器。否則,你不能提取參考nuget包。