continuous-integration - 是否有可能让 NuGet.exe 在与 Visual Studio 断开连接的情况下运行?

标签 continuous-integration build-automation nuget

我已经与 NuGet 搏斗了几天,现在我正沮丧地求助于 StackOverflow - 希望这里有人能好心地为我指明正确的方向。

我已经多次将 NuGet 用于简单的单人宠物项目,但这是我第一次将它用于我真正关心的事情并希望拥有完全连续的构建等。我正在尝试创建一个简单的 NAnt 构建脚本来获取 Git 的源代码,确保外部依赖项已被关闭、编译和运行测试 - vanilla CI。

我最初尝试让解决方案恢复工作,但它没有工作,或者我不知道它是如何工作的。 Visual Studio 不在构建服务器上,也不会安装在那里——这不是一个选项。顺便说一句,我无法让解决方案恢复只与两个开发人员一起工作(一个试图重新下载源代码并干净地构建)。我假设这是因为必须在所有地方打开“允许解决方案还原”(默认情况下不是)。在我深入了解之前,我曾尝试过这种方法——坦率地说,让我的包管理器与 IDE 紧密耦合让我感到不舒服,并希望我能用另一种方式来做。我习惯使用的包管理器是简单的命令行工具——CI 构建脚本在构建时调用它,开发人员按需执行。在 NuGet 源代码的最后 30 分钟里,我花了最后两个小时试图让它工作。我觉得我正在与工具作斗争,需要重新启动。

有没有人有在多开发人员 + CI 场景中使用 NuGet 的最佳示例?这就是我想要的:

  1. 任何和所有开发人员都可以获得源代码并在 3 或 更少的点击次数(最好是 1 次)。如果二进制文件不在本地,则将通过 JIT 获取。如果它们存在,它们将在必要时进行更新,等等。理想情况下,这甚至不需要安装 NuGet(即 NuGet.exe 需要在我的存储库中)。
  2. 通过 Jenkins、TeamCity 等 CI 服务器执行 #1(最好使用相同的脚本)
  3. 如果它不过分反对该工具,我希望使用单个 packages.config 文件将所有这些与 Visual Studio 断开连接,并将所有二进制文件转储到存储库根目录中的单个 Lib 文件夹中。

如有任何指点,我们将不胜感激。

最佳答案

下面,我认为您可以如何实现您的每个要求:

  1. 您需要在解决方案中“启用 NuGet 包还原”:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
  2. 正如@alexander-doroshenko 提到的 TeamCity,您可以使用 Nuget 安装程序:http://confluence.jetbrains.com/display/TCD7/NuGet+Installer , 但如果你想让脚本在 Jenkins 中运行,请为每个项目尝试这个(也适用于 TC,作为命令行步骤):

    nuget.exe install "[项目文件夹]/packages.config"-source ""-solutionDir ""-OutputDirectory "packages"

  3. 此必要条件将由第 1 项和第 2 项完成。

关于continuous-integration - 是否有可能让 NuGet.exe 在与 Visual Studio 断开连接的情况下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16653978/

相关文章:

java - 如何在不支持 "alien"嵌套元素的 ant 任务中使用宏

visual-studio-2010 - 团队基础服务器 "Build Controller"

powershell - Nuget - 在子文件夹中的内容上设置 CopyToOutputDirectory

visual-studio-2010 - 如何从 CruiseControl.Net 触发 NuGet v2.x 包还原

continuous-integration - 如何配置 Hudson 以在端口 80 上运行?

ldap - 巡航控制 .NET 安全

erlang - Erlang/OTP持续部署简介

continuous-integration - 运行 TeamCity VSTest 构建步骤时路径中存在非法字符

azure - Azure 上的包还原失败

c# - Entity Framework 4.3.1 到 6 EDMX (ObjectContext)