如何在VS Solution中使用git子模块时解析nuget包

时间:2017-02-13 08:19:43

标签: .net git visual-studio nuget git-submodules

我有两个存储库。第一个是大型集成存储库,其中包含许多项目。第二个是相对较小的解决方案,其中有许多项目正在单独开发,然后集成到第一个解决方案中。

我将第二个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差异中看到它们开始引用根包文件夹(如..\..\packages)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我通过将..\packages个文件中的*.csproj更改为$(SolutionDir)\packages来解决了问题。效果很好。简单的脚本涵盖了它:

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

不知道为什么nuget默认情况下不会这样做,现在每当我更新/安装nuget包时我都需要重新运行这个脚本。