.net - 使用 VS 解决方案的 git 子模块时如何解析 nuget 包

标签 .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 恢复包文件夹。因此,我添加的子模块中的项目都无法恢复其 nuget 包,因为它们搜索了不存在的 my-second-project/packages 文件夹。如果我重新安装 nuget 包,那么我可以在 git diff 中看到它们开始引用根包文件夹(如 ..\..\packages)。

我该如何解决这个问题?

最佳答案

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

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

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

关于.net - 使用 VS 解决方案的 git 子模块时如何解析 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199497/

相关文章:

Eclipse 和 EGit : Can't export SSH

.net - 编译时间可以得到改善。运行 "dotnet build --build-profile"获取更多信息

c# - Visual Studio : Code analyzer to determine what exceptions a method can throw?

c# - 如何向 tcp 服务器发出 http 请求?

c# - 框架.NET。很多 Dll 和一个 Exe 之间的区别

.net - 异步上传 Azure Blob : BeginUploadFromStream vs. BackgroundWorker

c# - Azure 管道 : "No packages matched the search pattern."

.net - Azure 上的 Entity Framework "Invalid attempt to read when no data is present"和 'large' 数据

应用程序发布的 git 标签与分支

git - gitkraken repo 上的 "could not find a compatible repository"错误