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.
# 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.

输入

solution - 项目
string. 必需。 默认值:**/*.sln

如果要生成多个项目,请指定搜索条件。 可以使用单文件夹通配符 (*) 和递归通配符 (**) 。 例如, **.*proj 在所有子目录中搜索所有 MSBuild 项目 (.*proj) 文件。

确保指定的项目已由此生成管道下载。 在“存储库”选项卡上:

  • 如果使用 TFVC,请确保项目是“存储库”选项卡上映射之一的子级。
  • 如果使用 Git,请确保项目或项目位于要生成的分支的 Git 存储库中。

提示

如果要生成解决方案,建议使用 Visual Studio 生成任务 而不是 MSBuild 任务。


msbuildLocationMethod - Msbuild
string. 允许的值: versionlocation (指定位置) 。 默认值:version


msbuildVersion - MSBuild 版本
string. 可选。 在 时 msbuildLocationMethod = version使用 。 允许的值: latest17.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.0xbuild 则使用 (Mono) 。


msbuildVersion - MSBuild 版本
string. 可选。 在 时 msbuildLocationMethod = version使用 。 允许的值: latest16.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.0xbuild 则使用 (Mono) 。


msbuildArchitecture - MSBuild 体系结构
string. 可选。 在 时 msbuildLocationMethod = version使用 。 允许的值: x86 (MSBuild x86) , x64 (MSBuild x64) 。 默认值:x86

提供要运行的 msBuild 体系结构 (x86、x64) 。


msbuildLocation - MSBuild 的路径
string. 可选。 在 时 msbuildLocationMethod = location使用 。

提供 MSBuild 的路径。


platform - 平台
string.

提示

  • 如果目标是 MSBuild 项目 (.*proj) 文件而不是解决方案,请指定 AnyCPU(不带空格)。
  • 声明一个生成变量,例如 BuildPlatform 在“变量”选项卡上声明 (Allow 在“队列时间”中选择) ,并在此处将其引用为 $(BuildPlatform)。 这样,就可以在将生成排队和启用多个配置的生成时修改平台。

configuration - 配置
string.

提示

声明一个生成变量,例如 BuildConfiguration 在“变量”选项卡上声明 (Allow 在“队列时间”中选择) ,并在此处将其引用为 $(BuildConfiguration)。 这样,就可以在将生成排队和启用多个配置的生成时修改平台。


msbuildArguments - MSBuild 参数
string.

指定传递给 Windows) 上的 MSBuild (和 macOS) 上的 xbuild (的其他参数。


clean - 清洁
boolean. 默认值:false

False如果要将此设置为增量生成,请将 设置为 。 此设置可能会缩短生成时间,尤其是当代码库很大时。 除非还将存储库False设置为 Clean ,否则此选项没有实际效果。 True如果要重新生成代码项目中的所有代码,请将 设置为 。 这等效于 MSBuild /target:clean 参数。 有关详细信息,请参阅 存储库选项


maximumCpuCount - 并行生成
boolean. 默认值:false

如果 MSBuild 目标配置与并行生成兼容,则可以检查此输入以将开关传递给/m仅) 的 MSBuild (Windows。 如果目标配置与并行生成不兼容,则选中此选项可能会导致生成 file-in-use 错误,或者间歇性或不一致的生成失败。


restoreNugetPackages - 还原 NuGet 包
boolean. 默认值:false

此选项已弃用。 若要还原 NuGet 包,请在生成之前添加 NuGet 任务。


logProjectEvents - 记录项目详细信息
boolean. 默认值:false

(可选) (Windows) 记录每个项目时间线详细信息。


createLogFile - 创建日志文件
boolean. 默认值:false

(可选) (仅限 Windows) 创建日志文件。


logFileVerbosity - 日志文件详细程度
string. 可选。 在 时 createLogFile = true使用 。 允许的值:quietminimalnormaldetaileddiagnostic。 默认值:normal

指定日志文件的详细程度。


任务控制选项

除了任务输入,所有任务都有控制选项。 有关详细信息,请参阅 控制选项和常见任务属性

输出变量

无。

备注

我该使用 Visual Studio Build 任务还是 MSBuild 任务?

如果要生成解决方案,大多数情况下应使用 Visual Studio Build 任务。 此任务可自动:

  • 设置 /p:VisualStudioVersion 属性。 此操作会强制 MSBuild 使用一组特定的目标来提高成功生成的可能性。
  • 指定 MSBuild 版本参数。

在某些情况下,可能需要使用该 MSBuild 任务。 例如,如果除了解决方案之外,你还要生成代码项目,则应使用 MSBuild 任务。

我可在何处了解 MSBuild 的详细信息?

MSBuild 参考

MSBuild 命令行参考

如何为多个平台生成多个配置?

  1. 在“变量”选项卡上,确保已为配置和平台定义了变量。 若要指定多个值,请用逗号分隔它们。 例如:

    • 对于 .NET 应用,可以使用调试值和发布值进行指定 BuildConfiguration ,还可以使用任何 CPU 值进行指定 BuildPlatform
    • 对于 C++ 应用,可以使用调试值和发布值进行指定 BuildConfiguration ,还可以使用任何 x86 和 x64 值进行指定 BuildPlatform
  2. 在“选项”选项卡上,选择 MultiConfiguration 并指定 Multipliers,用逗号分隔。 例如: BuildConfiguration, BuildPlatform 选择 Parallel 是否要将作业 (每个值组合) 一个并行分发到多个代理(如果可用)。

  3. 在“生成”选项卡上,选择此步骤并指定 PlatformConfiguration 参数。 例如:

    • 平台:$(BuildPlatform)
    • 配置:$(BuildConfiguration)

是否可以生成 TFSBuild.proj 文件?

无法生成 TFSBuild.proj 文件。 这些类型的文件由 TFS 2005TFS 2008生成。 这些文件包含任务,并且仅使用 XAML 生成支持目标。

故障排除

本部分提供有关用户在使用任务时可能遇到的常见问题的 MSBuild 故障排除提示。

生成失败,出现以下错误:运行 MSBuild 时发生内部故障

可能的原因
  • 更改 MSBuild 版本。
  • 第三方扩展的问题。
  • Visual Studio 的新更新可能导致生成代理上缺少程序集。
  • 移动或删除了一些必要的 NuGet 包。
故障排除建议
使用诊断运行管道以检索详细日志

诊断此问题的可用选项之一是查看生成的日志。 可以通过在管道运行摘要中选择相应的任务和作业来查看管道日志。

获取管道执行的日志 获取诊断问题的日志

还可以设置和下载自定义的详细日志,以帮助进行故障排除:

除了管道诊断日志外,还可以检查这些其他类型的日志,其中包含更多信息,以帮助调试和解决问题:

尝试在本地重现错误

如果使用托管生成代理,则可能需要尝试在本地重现错误。 这将有助于缩小失败范围,无论失败是生成代理还是生成任务的结果。

MSBuild使用相同的参数在本地计算机上运行相同的命令。 请查看 MSBuild 命令 以供参考。

提示

如果可以在本地计算机上重现问题,则下一步是调查 MSBuild 问题。

详细了解 Microsoft 托管代理

若要设置自己的自承载代理并运行生成作业,请执行以下操作:

我还能执行什么操作?

某些 MSBuild 错误是由 Visual Studio 中的更改引起的,因此可以在 Visual Studio 开发者社区上搜索以查看是否已报告此问题。 我们也欢迎你提出问题、建议和反馈。

要求

要求 说明
管道类型 YAML,经典版本
运行平台 Agent、DeploymentGroup
需求 自承载代理必须具有满足以下要求的功能才能运行使用此任务的作业:msbuild
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任意
可设置变量 任意
代理版本 1.95.0 或更高版本
任务类别 构建

另请参阅