2016-08-05 77 views
1

我有一個包含不同項目的C#解決方案。在這些項目中,我有一些普通的nuget軟件包,比如Newtonsoft.Json,EntityFramework等。但是當我在另一臺機器上籤出我的源代碼並構建它時,它不會複製Dlls,我不會複製Dlls。整個解決方案文件夾git,我可以看到包文件夾和Bitbucket中的內容。我做錯了什麼?從git退房後缺少nuget dlls

P.S:我知道我可以運行下面來恢復我的軟件包,但這是一個很大的痛苦。 P.S.S:我查過並看到了thisthis。我在尋找一種方式,以防止再次

nuget install packages.config 
+1

是否有任何特殊的原因,你不希望nuget自動恢復構建丟失的數據包? –

+0

@ManfredRadlwimmer不,我可以把任何可以把dll放在他們的地方的東西。我應該從git中刪除包文件夾嗎? –

+1

在我看來,你不應該把你的軟件包存儲在任何倉庫中。只要在必要時讓他們恢復。一旦恢復,Nuget會將這些軟件包緩存在盒子上,在隨後的使用中它將使用緩存中的軟件包。例如在任何其他項目中使用相同的包。您也可以編寫一個.bat文件,您只需雙擊它即可恢復軟件包。 –

回答

3

發生的慣用方式來使用的NuGet(NPM不同,例如,它是典型的承諾node_packages)是提交只有你packages.config。 Visual Studio將在packages/文件夾中檢測丟失的包並在構建時恢復它們,並且命令行中的nuget restore也會執行相同的操作。

這樣做的原因是二進制文件比文本文件大,而且不可區分(即不能存儲增量)。我不確定git是否像svn那樣工作,但是nuget的作者並不是僅僅爲那些使用git的人編寫的。

如果你很在意包失蹤,我有兩點:

  1. Nuget.org都相當謹慎,並非是可能的。他們設置了一些東西,以便軟件包只能被軟刪除,這意味着恢復可以看到這些版本,而nuget install不會。
  2. 許多人運行自己的內部包服務器(如克朗代克),它作爲nuget.org的一種代理。如果您想打包內部庫並使用nuget將它們分發到項目中,而不將它們發佈到互聯網上,這也是有益的。
+0

是的,我喜歡第二點,因爲[TheShooter](http://stackoverflow.com/users/6399610/the-shooter)也提到過。 +1 – MickyD

+0

謝謝@尼爾巴恩威爾,非常好的考慮,我會在以後申請。但首先,根據你的回答,如果我忽略了我的git倉庫中的包文件夾,我不會有任何問題。對?我會嘗試它然後:)(Y) –

+0

忽略包我的問題解決 –