2017-02-13 158 views
1

我有兩個存儲庫。第一個是擁有大量項目的大型集成存儲庫。第二個是相對較小的解決方案,其中有許多項目正在單獨開發,然後整合到第一個解決方案中。如何使用VS的git子模塊解決nuget包解決方案

我添加第二git倉庫到第一git倉庫的子模塊,所以我有這樣的文件結構:

MainSolution.sln 
SomeProject1 
SomeProject2 
packages 
my-second-project 
    SecondSolution.sln 
    SomeProject3 
    SomeProject4 

我的獨立的存儲設備(恢復的NuGet包後)看起來像

SecondSolution.sln 
SomeProject3 
SomeProject4 
packages 

現在,每個項目都分別引用nuget restore packages文件夾。所以我的項目中沒有添加的子模塊能夠恢復他們的nuget包,因爲他們搜索的文件夾不存在my-second-project/packages。如果我重新安裝nuget包,那麼我可以在我的git diffs中看到他們開始引用根包文件夾(如..\..\packages)。

我該如何解決這個問題?

+0

您是否在位於.sln文件夾或%Appdata%\ NuGet \ NuGet.config中的nuget.config文件中設置了任何「repositoryPath」?如果是的話,可否請將repositoryPath設置分享給我? –

+0

我解決了所有'* .csproj'文件中的'.. \ packages'到'$(SolutionDir)\ p​​ackages'的問題。工作得很好。簡單的腳本覆蓋它:'find -name「* .csproj」| xargs sed -i's/\。\。\\ packages/$(SolutionDir)\\ packages/g'' – EwanCoder

+0

很高興知道您已解決此問題。您能否請您寫下您的答案,並將其標記爲對其他有同樣問題的社區有利。謝謝。 –

回答

1

我解決了所有*.csproj文件中的..\packages$(SolutionDir)\packages的問題。工作得很好。簡單的腳本,它包括:

find -name "*.csproj" | xargs sed -i 's/\.\.\\packages/$(SolutionDir)\\packages/g' 

不知道爲什麼的NuGet默認情況下不行爲這種方式,現在我需要重新運行該腳本,每當我更新/安裝的NuGet包。