使用msbuild任务传递参数

时间:2016-05-05 07:49:44

标签: jenkins tfs msbuild

我正在尝试创建一个构建脚本,将我们的构建过程从Cruise Control迁移到jenkins,当我调用MSBuild任务时,我无法看到如何访问所有正常的命令行参数。 / p>

例如,我想运行等效的

msbuild  common.sln    /p:Platform="$(MsBuildPlatformAnyCpu)" /p:Configuration=$(MsBuildConfiguration) /v:$(MsBuildVerbosity) /p:WarningLevel=$(MsBuildWarningLevel);OutputPath="$(ProjectBinariesFolder)" /fileLogger /flp1:logfile=$(ProjectBuildLogsFolder)\$(ProjectFile)_BuildErrors.txt;errorsonly /flp2:logfile=$(ProjectBuildLogsFolder)\$(ProjectFile)_BuildWarnings.txt;warningsonly /flp3:LogFile=$(ProjectBuildLogsFolder)\$(ProjectFile)_Build.txt;Verbosity=diagnostic

这是我的msbuild文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build">
 <PropertyGroup>
    <JenkinsBuildFolder>C:\Program Files (x86)\Jenkins\jobs\build2\workspace</JenkinsBuildFolder>
    <ProjectSourcesFolder>$(JenkinsBuildFolder)\Sources</ProjectSourcesFolder>
    <ProjectBinariesFolder>$(JenkinsBuildFolder)\Binaries</ProjectBinariesFolder>
    <ProjectBuildLogsFolder>$(JenkinsBuildFolder)\BuildLogs</ProjectBuildLogsFolder>
    <ProjectTestLogsFolder>$(JenkinsBuildFolder)\TestLogs</ProjectTestLogsFolder>

    <ProjectGuid>{F8A25B4A-589A-4D3D-A568-4700FD776250}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<ProjectToBuild Include="Common.sln">
    <Properties>OutputPath=$(ProjectBinariesFolder);Configuration=Build</Properties>
</ProjectToBuild>

</ItemGroup>

<Target Name="Build">
  <MSBuild Projects="@(ProjectToBuild)"  />         
</Target>

</Project>

但是我不知道如何获得命令行开关/ v / filelogger等的任务等效属性

1 个答案:

答案 0 :(得分:1)

你不能。

/ p用于从命令行向构建中注入属性。像/ v这样的其他命令行选项特定于构建过程,您无法将它们移动到proj文件。

请注意,您的Cruise Control设置指定那些/ p参数可能是有充分理由的。我怀疑这是因为这些参数的值是在Cruise Control中定义的,它是一种参数化构建的方法 - 所以可以启动构建并说$(MsBuildConfiguration)=“Debug”。您可能希望对Jenkins执行相同的操作,而不是硬化值。

对于/ p参数,Jenkins允许您将参数传递给msbuild - 请参阅下面的默认参数。

enter image description here