为什么MSbuild不使用Jenkins在单个操作中构建多个项目?

时间:2016-07-01 12:17:00

标签: jenkins msbuild jenkins-plugins

要构建.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项目或解决方案”来构建剩余的项目?

2 个答案:

答案 0 :(得分:0)

如果您正在构建单个.sln文件 - 您可以控制为特定配置构建的项目(在您的情况下是发布版本)。只需在Visual Studio中包含用于构建Configuration Manager的必要项目。

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

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

答案 1 :(得分:0)

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

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

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

但是,这不允许您使用Jenkins,因为它实际上是打算使用。

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

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

注意: Visual Studio的缺点是pdbserver最终会被Jenkins杀死。看起来最新的msbuild插件处理了这个问题。

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