我正在尝试使用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项目或解决方案”的问题。
感谢你的帮助。
答案 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开关:只有在解决方案不相互依赖时才使用它。