【问题标题】:Why MSbuild does not build multiple projects in single action using Jenkins?为什么 MSbuild 不使用 Jenkins 一次性构建多个项目?
【发布时间】:2016-11-03 20:31:06
【问题描述】:

要构建 .NET 项目,请在 Jenkins 作业的“构建”部分下使用“使用 MSBuild 构建 Visual Studio 项目或解决方案”插件。

通过使用它,我可以通过指定以下详细信息单独运行一个项目文件。

MSBuild Version: msbuild(set through environment variables)
MSBuild Build File: ProjectA.sln 
Command Line Arguments:  /p:Configuration=Release

我尝试通过在第一个项目旁边提供空格和逗号来提供另一个项目文件。 Jenkins 工作构建以失败告终。在我的詹金斯工作中,我无法使用这个插件构建多个项目。

通常我们可以使用迭代来做到这一点(获取特定目录中的所有解决方案文件并构建它)。

但是在 jenkins 中,这是否可以通过循环“使用 MSBuild 构建 Visual Studio 项目或解决方案”或任何其他可用选项(插件)来实现,例如将多个项目传递给 MSBuild 构建文件: 并一步构建(而不是一次又一次地使用“使用 MSBuild 构建 Visual Studio 项目或解决方案”来构建剩余的项目?

【问题讨论】:

  • @MichaelMao,我们搜索了很多,但没有得到任何相关信息。如果您对此有解决方案,请帮助我们。
  • 为什么链接的问题不相关?据我所知,它为您遇到的完全相同的问题提供了解决方案? (尽管您可以使用 powershell 脚本而不是批处理文件,或者使用 msbuild 文件来构建您需要的所有解决方案,或者...,但原理保持不变:添加“中间”方式来构建多个解决方案广告让詹金斯调用)

标签: jenkins msbuild jenkins-plugins


【解决方案1】:

如果您正在构建单个 .sln 文件 - 您可以控制正在为特定配置构建哪些项目(在您的情况下是发布)。只需在 Visual Studio 的配置管理器中包含构建所需的项目。

作为替代方法 - 您可以创建非常简单的 msbuild 脚本,其中将包含您想要构建的所有项目\解决方案,并在您的 Jenkins 任务中使用该聚合构建脚本。

注意:有点迂腐 - 解决方案文件不是 msbuild 文件,但 .*proj 通常是。通常,您将拥有一个包含所有项目的解决方案文件。当调用 msbuild.exe 来构建解决方案文件时 - 它会根据 .sln 文件中的所有设置自动生成自定义构建脚本,然后构建该自动生成的脚本...

【讨论】:

    【解决方案2】:

    无法使用 msbuild 插件构建多个解决方案。

    插件需要一个解决方案和配置。

    您可以使用其中一个脚本插件在工作区目录上执行迭代并为每个解决方案执行 msbuild,如上所述,您可以扮演自己的 msbuild 文件。

    但是,这不允许您使用 Jenkins,因为它是真正打算使用的。

    这个想法基本上是尽可能多地并行构建。您必须设置依赖项,因为您知道哪个解决方案/项目依赖于另一个解决方案/项目。

    我使用这种方法在 Jenkins 下构建了大约 200 个 Visual Studio 解决方案配置(仅用于 500 多个项目)。设置起来并不快,但现在已经稳定了大约 4 年。

    注意: Visual Studio 的缺点是 pdbserver 最终可能会被 Jenkins 杀死。看起来最新的 msbuild 插件可以解决这个问题。

    有很多方法可以解决这个问题,Jenkins 网站上记录了这些方法。我已经走得更远了,我每 10 到 15 个作业停止并重新启动 pdbserver,因为我发现它不是特别稳定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 2013-06-28
      • 1970-01-01
      • 2015-03-16
      相关资源
      最近更新 更多