问题:用msbuild任务传参

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

例如,我想运行相当于

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 等的任务等效属性

解答

你不能。

/p 用于从命令行将属性注入到构建中。 /v 等其他命令行选项特定于构建过程,您不能将它们移动到 proj 文件中。

请注意,您的巡航控制设置指定这些 /p 参数可能是有充分理由的。我怀疑这是因为这些参数的值是在 Cruise Control 中定义的,这是一种对构建进行参数化的方法——因此可以启动构建并说 $(MsBuildConfiguration) u003d "Debug"。你可能想对 Jenkins 做同样的事情,而不是硬核价值观。

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

在此处输入图像描述

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐