使用MSBuild插件

时间:2017-04-25 21:19:31

标签: jenkins msbuild

我正在尝试使用MSBuild插件在Jenkins中构建.net多个解决方案文件。我已经安装并配置了MSBuild。在构建步骤 - “使用MSBuild构建Visual Studio项目或解决方案”中,在“MSBuild Build FIle”下,我们如何引用其中包含5个解决方案文件路径的构建文件(ex,test.txt)。当我直接给路径C:\ test.txt时,构建失败并出现错误

C:\test.txt(1,1): error MSB4025: The project file could not be loaded. Data at the root level is invalid. Line 1, position 1.

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:02.22
Build step 'Build a Visual Studio project or solution using MSBuild' marked build as failure
Finished: FAILURE

以下是我的test.txt文件中提到的解决方案文件路径

C:\workspace\DotNet\Constants.sln
C:\workspace\DotNet\Security.sln
C:\workspace\DotNet\Library.sln
C:\workspace\DotNet\Mapping.sln
C:\workspace\DotNet\MapForce.sln

我可以通过在.txt文件中提及五个解决方案文件路径并通过使用一个“使用MSBuild部分构建Visual Studio项目或解决方案”引用.txt文件路径来构建吗?

我已尝试使用命令提示手动它构建正常。此外,通过批处理命令尝试使用“执行Windows批处理命令”选项,它运行正常并且构建成功,在设置包含许多解决方案文件路径的.txt文件时遇到“使用MSBuild构建Visual Studio项目或解决方案”的问题。

感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

MSBuild构建用xml编写的MSBuild文件,而不是文本文件(因此错误MSB4025)。幸运的是,创建一个可用于构建x其他文件的文件非常简单,这是一个例子:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <ItemGroup>
    <Sln Include="C:\workspace\DotNet\Constants.sln"/>
    <Sln Include="C:\workspace\DotNet\Security.sln"/>
    <Sln Include="C:\workspace\DotNet\Library.sln"/>
    <Sln Include="C:\workspace\DotNet\Mapping.sln"/>
    <Sln Include="C:\workspace\DotNet\MapForce.sln"/>
  </ItemGroup>
  <Target Name="Build">
    <MsBuild Projects="@(Sln)" Targets="Build" Properties="Configuration=Release;Platform=Win32" BuildInParallel="True" />
  </Target>
</Project>

这只是以简单的方式编写,更短但可能更复杂的代码可能适用。例如。只需在C:\ workspace \ DotNet目录中构建所有解决方案,您只需编写<Sln Include="C:\workspace\DotNet\*.sln"/>而不是手动拼写出每个解决方案。或者,如果所有这些都驻留在该目录中,则可以仅通过文件名包含它们,例如, <Sln Include="Constants.sln"/>然后在展开列表时添加目录,如Projects="@(Sln->'c:\workspace\dotnet\%(Identity)')"。 如您所见,这构建了Win32 | Release版本,通过更改属性来更改它。也不是BuildInParallel开关:只有在解决方案不相互依赖时才使用它。