MSBuild@1 - MSBuild v1 任务
使用此任务通过 MSBuild 进行生成。
语法
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
inputs:
solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
#msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
#msbuildVersion: 'latest' # 'latest' | '17.0' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
#msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
#msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild.
#platform: # string. Platform.
#configuration: # string. Configuration.
#msbuildArguments: # string. MSBuild Arguments.
#clean: false # boolean. Clean. Default: false.
# Advanced
#maximumCpuCount: false # boolean. Build in Parallel. Default: false.
#restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
#logProjectEvents: false # boolean. Record Project Details. Default: false.
#createLogFile: false # boolean. Create Log File. Default: false.
#logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
inputs:
solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
#msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
#msbuildVersion: 'latest' # 'latest' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
#msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
#msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild.
#platform: # string. Platform.
#configuration: # string. Configuration.
#msbuildArguments: # string. MSBuild Arguments.
#clean: false # boolean. Clean. Default: false.
# Advanced
#maximumCpuCount: false # boolean. Build in Parallel. Default: false.
#restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
#logProjectEvents: false # boolean. Record Project Details. Default: false.
#createLogFile: false # boolean. Create Log File. Default: false.
#logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
输入
solution
-
Project
string
。 必填。 默认值:**/*.sln
。
如果要生成多个项目,请指定搜索条件。 可以使用单文件夹通配符 \ 和递归通配符(**)。 例如,**.*proj
在所有子目录中搜索所有 MSBuild 项目 (.*proj
) 文件。
确保此生成管道下载指定的项目。 在“存储库”选项卡上:
- 如果使用 TFVC,请确保项目是存储库选项卡上其中一个映射的子级。
- 如果使用 Git,请确保项目或项目位于要生成的分支中的 Git 存储库中。
小提示
如果要生成解决方案,建议使用 Visual Studio 生成任务 而不是 MSBuild 任务。
msbuildLocationMethod
-
MSBuild
string
。 允许的值:version
、location
(指定位置)。 默认值:version
。
msbuildVersion
-
MSBuild 版本
string
。 可选。 当 msbuildLocationMethod = version
时使用。 允许的值:latest
、17.0
(MSBuild 17.0)、16.0
(MSBuild 16.0)、15.0
(MSBuild 15.0)、14.0
(MSBuild 14.0)、12.0
(MSBuild 12.0)、4.0
(MSBuild 4.0)。 默认值:latest
。
如果找不到首选版本,则会改用找到的最新版本。 在 macOS 代理上,如果版本低于 15.0
,则使用 xbuild
(Mono)。
msbuildVersion
-
MSBuild 版本
string
。 可选。 当 msbuildLocationMethod = version
时使用。 允许的值:latest
、16.0
(MSBuild 16.0)、15.0
(MSBuild 15.0)、14.0
(MSBuild 14.0)、12.0
(MSBuild 12.0)、4.0
(MSBuild 4.0)。 默认值:latest
。
如果找不到首选版本,则会改用找到的最新版本。 在 macOS 代理上,如果版本低于 15.0
,则使用 xbuild
(Mono)。
msbuildArchitecture
-
MSBuild 体系结构
string
。 可选。 当 msbuildLocationMethod = version
时使用。 允许的值:x86
(MSBuild x86)、x64
(MSBuild x64)。 默认值:x86
。
提供要运行的 MSBuild 体系结构 (x86, x64)。
MSBuild的 msbuildLocation
- 路径
string
。 可选。 当 msbuildLocationMethod = location
时使用。
提供 MSBuild 的路径。
platform
-
平台
string
。
小提示
- 如果要面向 MSBuild 项目(.*proj)文件而不是解决方案,请指定
AnyCPU
(无空格)。 - 在“变量”选项卡上声明生成变量,例如
BuildPlatform
(在队列时间选择Allow
),并将其引用为$(BuildPlatform)
。 这样,就可以在对生成进行排队并启用生成多个配置时修改平台。
configuration
-
配置
string
。
小提示
在“变量”选项卡上声明生成变量,例如 BuildConfiguration
(在队列时间选择 Allow
),并将其引用为 $(BuildConfiguration)
。 这样,就可以在对生成进行排队并启用生成多个配置时修改平台。
msbuildArguments
-
MSBuild 参数
string
。
指定传递给 MSBuild(在 Windows 上)和 xbuild(在 macOS 上)的其他参数。
clean
-
干净
boolean
。 默认值:false
。
如果要将此设置为增量生成,请设置为 False
。 此设置可能会减少生成时间,尤其是在基本代码很大时。 除非还将 Clean
存储库设置为 False
,否则此选项没有实际效果。
如果要重新生成代码项目中的所有代码,请设置为 True
。 这等效于 MSBuild /target:clean
参数。
有关详细信息,请参阅 存储库选项
maximumCpuCount
-
并行生成
boolean
。 默认值:false
。
如果 MSBuild 目标配置与并行生成兼容,则可以检查此输入,将 /m
开关传递给 MSBuild(仅限 Windows)。 如果目标配置与并行生成不兼容,请检查此选项可能会导致生成 file-in-use
错误或间歇性或不一致的生成失败。
logProjectEvents
-
记录项目详细信息
boolean
。 默认值:false
。
(可选)记录每个项目的时间线详细信息(仅限 Windows)。
createLogFile
-
创建日志文件
boolean
。 默认值:false
。
(可选)创建日志文件(仅限 Windows)。
logFileVerbosity
-
日志文件详细程度
string
。 可选。 当 createLogFile = true
时使用。 允许的值:quiet
、minimal
、normal
、detailed
、diagnostic
。 默认值:normal
。
指定日志文件详细程度。
任务控制选项
除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性。
输出变量
没有。
注解
我应该使用 Visual Studio 生成任务还是 MSBuild 任务?
如果要生成解决方案,在大多数情况下,应使用 Visual Studio 生成任务。 此任务自动:
- 设置
/p:VisualStudioVersion
属性。 这迫使 MSBuild 使用一组特定的目标,以提高成功生成的可能性。 - 指定 MSBuild 版本参数。
在某些情况下,可能需要使用 MSBuild
任务。 例如,如果要生成除解决方案之外的代码项目,则应使用它。
在哪里可以找到有关 MSBuild 的详细信息?
如何为多个平台生成多个配置?
在“变量”选项卡上,确保为配置和平台定义了变量。 若要指定多个值,请使用逗号分隔它们。 例如:
- 对于 .NET 应用,可以使用调试和发布值指定
BuildConfiguration
,还可以使用任何 CPU 值指定BuildPlatform
。 - 对于C++应用,可以使用调试和发布值指定
BuildConfiguration
,还可以使用任何 x86 和 x64 值指定BuildPlatform
。
- 对于 .NET 应用,可以使用调试和发布值指定
在“选项”选项卡上,选择
MultiConfiguration
并指定用逗号分隔的Multipliers
。 例如:如果要将作业(每个值组合一个)分发到多个代理(如果可用),BuildConfiguration, BuildPlatform
选择Parallel
。在“生成”选项卡上,选择此步骤并指定
Platform
和Configuration
参数。 例如:- 平台:
$(BuildPlatform)
- 配置:
$(BuildConfiguration)
- 平台:
是否可以生成 TFSBuild.proj 文件?
无法生成 TFSBuild.proj
文件。 这些类型的文件由 TFS 2005
和 TFS 2008
生成。 这些文件包含任务,并且仅使用 XAML 生成支持目标。
故障排除
本部分提供有关用户在使用 MSBuild
任务时可能遇到的常见问题的故障排除提示。
- 生成失败并出现以下错误:运行 MSBuild 时发生内部故障
生成失败并出现以下错误:运行 MSBuild 时出现内部故障
- 可能的原因
- 故障排除建议
可能的原因
- 在 MSBuild 版本中更改。
- 第三方扩展的问题。
- Visual Studio 的新更新可能导致生成代理上缺少程序集。
- 移动或删除了一些必要的 NuGet 包。
故障排除建议
使用诊断运行管道以检索详细日志
诊断问题的可用选项之一是查看生成的日志。 可以通过在管道运行摘要中选择相应的任务和作业来查看管道日志。
若要获取管道执行的日志,获取日志来诊断
还可以设置并下载自定义的详细日志,以帮助进行故障排除:
除了管道诊断日志,还可以检查这些其他类型的日志,其中包含更多信息,以帮助调试和解决问题:
尝试在本地重现错误
如果使用托管生成代理,则可能需要尝试在本地重现错误。 这有助于缩小失败是生成代理的结果还是生成任务。
使用相同参数在本地计算机上运行相同的 MSBuild
命令。 请查看 MSBuild 命令 以供参考。
小提示
如果可以在本地计算机上重现问题,下一步是调查 MSBuild 问题。
详细了解 Microsoft托管代理。
若要设置自己的自承载代理并运行生成作业,请执行以下作:
- Self-hosted Windows agents(自托管 Windows 代理)
- Self-hosted Linux agents(自托管 Linux 代理)
- Self-hosted macOS agents(自托管 macOS 代理)
我还能做什么?
某些 MSBuild 错误是由 Visual Studio 中的更改引起的,因此你可以搜索 Visual Studio 开发人员社区 以查看此问题是否已报告。 我们还欢迎你的问题、建议和反馈。
要求
要求 | 说明 |
---|---|
管道类型 | YAML,经典生成 |
运行时间 | 代理,DeploymentGroup |
需求 | 自承载代理必须具有与以下 要求匹配的 功能, 才能运行使用此任务的作业: msbuild |
功能 | 此任务不满足作业中后续任务的任何要求。 |
命令限制 | 任何 |
|
任何 |
代理版本 | 1.95.0 或更高版本 |
任务类别 | 建造 |