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。 允许的值: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.0,则使用 xbuild (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.0,则使用 xbuild (Mono)。


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

提供要运行的 MSBuild 体系结构 (x86, x64)。


MSBuildmsbuildLocation - 路径
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 错误或间歇性或不一致的生成失败。


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

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


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

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


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

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


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

指定日志文件详细程度。


任务控制选项

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

输出变量

没有。

注解

我应该使用 Visual Studio 生成任务还是 MSBuild 任务?

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

  • 设置 /p:VisualStudioVersion 属性。 这迫使 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,经典生成
运行时间 代理,DeploymentGroup
需求 自承载代理必须具有与以下 要求匹配的 功能, 才能运行使用此任务的作业: msbuild
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任何
Settable 变量 任何
代理版本 1.95.0 或更高版本
任务类别 建造

另请参阅