2011-09-10 67 views
10

我正在使用GIT和新的ASP.NET MVC項目。我在我的gitignore文件中的一行忽略的dll通過Gitignore遞歸包含Nuget DLL

*.dll 

我想沿着以下的行添加的東西包括(即不理睬)DLL文件在我的NuGet包文件夾

!/packages/*.dll 

我遇到的問題是,並非所有nuget軟件包都是同等創建的,並且根據問題包,DLL可能會在路徑層次結構中嵌套任意數量的級別。看來,我只需要沿着線一個遞歸解決方案:

!/packages/**/*.dll 

!/packages/**/* 

我還沒有找到一個解決方案,將通過mysysgit工作(或混帳的任何窗口分佈)。

有誰知道一種方法來使這項工作?

回答

19

讓保持在最高水平gitignore

在packages目錄下創建另一個.gitignore文件,並將!*.dll放入其中。

+0

工作過。謝謝! –

10

另一個需要考慮的選擇是不要將NuGet dll包含在存儲庫中,而應該在第一次構建項目時下載它們。這就是我們對所有的Nu​​Get依賴關係所做的。

UPDATE

的NuGet現在處理這個問題,而不必手動創建自己的編譯事件。此頁面上看到的細節:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages


原來的答案:

我們把NuGet.exe應用在我們的解決方案下的工具文件夾,然後將以下添加到我們的項目預編譯事件。

"$(SolutionDir)Tools\NuGet.exe" install "$(ProjectDir)packages.config" -o "$(SolutionDir)Packages" 

我們所建立的應用程序會下載所有的依賴,但隨着後續版本,的NuGet是足夠聰明地看到,他們在正確的版本已經存在,並跳過他們的第一次。

+0

這是一個有趣的解決方案 - 它解決了什麼問題? – vcsjones

+1

我想我把它看作是不檢查生成的代碼的擴展。我們在處理我們的服務參考時遇到了一些問題,在解決該問題的同時,我們也儘可能地減少了我們的回購中的外部依賴關係。當時我們遇到了大量的二進制文件,導致SVN中的結賬速度放緩。我不確定這是否會成爲我們當前設置的問題,但我們還沒有回去。 –

+3

更新:Nuget使用Nuget Package Restore支持此OOB。 – vcsjones