【问题标题】:What is the right way to add .NET project with NuGet dependencies to a git repo?将具有 NuGet 依赖项的 .NET 项目添加到 git 存储库的正确方法是什么?
【发布时间】:2013-01-23 22:06:05
【问题描述】:

我有一个项目,我正在为其编写 NUnit 测试(例如)。我想将代码提交到 git,但我也觉得将 NuGet 包(NUnit 和 NUnit.Runner)提交到 repo 是不好的做法。但是,我也不想打开包还原,因为我认为这是用户设置而不是项目设置 (IIRC)。

将具有 NuGet 依赖项的 .NET 项目添加到 git 存储库的正确方法是什么?我认为它会很高兴地抓住包,但需要开发人员干预。也许只是期望其他开发人员知道将那些丢失的包添加回项目中? (看起来我们最终也会一直解决 .csproj 冲突)。

【问题讨论】:

    标签: .net git nuget projects-and-solutions


    【解决方案1】:

    您应该只将解决方案的 packages.config 文件添加到您的 git 存储库中。每个开发者都可以通过它自动安装所需的包。

    例如,至少在 Visual Studio 2012 下,您可以在“工具”>“库包管理器”菜单下可访问的“包管理器设置”窗口中选中“允许 NuGet 在构建期间下载丢失的包”复选框。有了这个选项和packages.config 文件,你就没有别的事可做...

    【讨论】:

      【解决方案2】:

      如果无法或不愿意启用包恢复,开发人员可以通过命令行轻松添加所有包,如this question 中所述:

      您可以使用 nuget.exe 来恢复您的包。为每个项目运行以下命令。

      nuget install packages.config
      

      您也可以在预构建命令中运行它,如 here 所述:

      $(SolutionDir)Tools\nuget install $(ProjectDir)packages.config
      

      但说真的,包还原更简单,只需点击几下即可。

      【讨论】:

      • 我忘记了这一点——我实际上可以在项目中添加一个脚本 (.bat) 以重新加载包,并在自述文件中添加一个安装说明,说明项目需要安装 nuget.exe 和在类路径上。
      • 出于 3 个原因,我不喜欢使用包还原。首先,我想从新的结帐中从命令行运行构建,可能是某种 CI 的一部分。其次,IIRC 包恢复是一个系统/用户设置,我认为这意味着为机器上的用户而不是特定项目打开包恢复。第三个 IIRC 关闭包还原并不简单。也许 VS 2012 会更好。我还没有 VS 2012,和我一起工作的大多数人都只有 2010(现在)。
      • 根据链接,建议在工具下提交 nuget.exe,但如果系统需要在 32 位和 64 位上运行,这不会不起作用 - 因为 NuGet exe 将为 32/64 位目标构建?
      猜你喜欢
      • 1970-01-01
      • 2011-05-30
      • 2014-12-08
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多