我已經廣泛地尋找解決方案,嘗試了不同的方法,但都沒有工作,因此我在這裏問。NuGet和Git Submodules
我目前的需求是擁有單獨的Git倉庫,每個倉庫都包含一個.Net解決方案文件和相關的項目。其中一個或多個存儲庫僅包含類庫,我需要在其他存儲庫解決方案中使用這些庫。
我的第一個嘗試是使用Git Submodules來避免難看的複製粘貼,並且在開發應用程序時仍然可以使用類庫的源代碼。
所以我的嘗試是包含子模塊,然後在我當前的解決方案中,「添加現有項目」並加載所需的類庫(ies)。
我一直無法克服的巨大問題是Nuget包恢復。引進項目參考圖書館在「.. \包*」,但是當作爲子模塊它們位於一個額外的子文件夾,使他們無法找到所需的依賴進口:
- MySolution.sln
- Packages folder
- MyAppProject folder
- Submodule folder
-- EXPECTED packages folder for MyLibraryProject that I cannot generate
-- MyLibraryProject folder
一個解決方案,我發現並試圖爲this但它有兩個主要問題:
- 它應該使用的MSBuild包還原工作,我絕對不希望使用它
- 甚至試圖使用的MSBuild包還原它並沒有在所有的工作,我在我當前的解決方案文件夾中仍然有一個Packages文件夾。也許我做了錯誤,但又一次,我不想使用MsBuild方法。
現在,我真的很想知道是否有解決這個問題的一個清潔的方式,或者,如果我可以做的唯一的事情就是放棄其可用庫的源代碼在我的應用解決方案和上發佈我的圖書館一個私人NuGet飼料並從那裏引用它們。
謝謝。
你有沒有考慮過使用NuGet for MyLibraryProject而不是git submodules?運行一個本地NuGet服務器,爲該庫生成一個NuGet包,並在你的應用程序中添加一個引用。只是一個選項... – 2015-04-13 06:18:08
謝謝你的建議。我確實考慮過這個選擇,但我們正在考慮使用像AppHarbor這樣的在線CI服務,並且這會迫使我們使用公共(付費)nuget服務,例如MyGet,以便能夠從CI服務器,我們希望避免這種情況。 – 2015-04-13 07:32:59
好的。你必須擁有圖書館項目的兩個目錄層次嗎? (子模塊目錄是否只是庫項目目錄本身?) – 2015-04-13 08:05:28