在 VSTS 中实现并行构建的信心

Confidence enabling Build in Parallel in VSTS

我正在考虑启用:

我想知道构建是如何在 Visual Studio 本地发生的,理论上如果它在本地并行构建良好,我应该在 VSTS 中足够安全。

在过去,并行构建是通过 msbuild 命令行巫术启用的,根据我处理复杂项目的经验,它似乎很少使用其他 CPU 核心。

但在 Visual Studio 2017 年,这是一个可爱的简单项目,我现在有一个不错的新项目(快乐的日子):

我可以从 Visual Studio 的构建输出中看出有多少项目实际上最终是并行构建的,从而让我对 VSTS 设置充满信心吗?

当然,请参考这些步骤来更改 MSBuild 输出的详细程度(与您的屏幕截图相同 window):

  1. 工具=>选项
  2. Select 项目和解决方案=>构建和 运行
  3. 在 MSBuild 项目构建输出详细信息中选择 Normal

那么VS输出中的构建日志window会是这样的:

1>------ Rebuild All started: Project: MVCCore20, Configuration: Debug Any CPU ------
2>------ Rebuild All started: Project: ConsoleApp1, Configuration: Debug Any CPU ------
3>------ Rebuild All started: Project: ConsoleApp2, Configuration: Debug Any CPU ------
4>------ Rebuild All started: Project: ConsoleApp3, Configuration: Debug Any CPU ------
2>Target CoreClean:
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.deps.json".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.runtimeconfig.json".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.runtimeconfig.dev.json".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.dll".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.pdb".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.csprojResolveAssemblyReference.cache".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.csproj.CoreCompileInputs.cache".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.AssemblyInfoInputs.cache".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.AssemblyInfo.cs".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.dll".
2>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.pdb".
2>Target GenerateTargetFrameworkMonikerAttribute:
2>  Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
4>Target CoreClean:
4>  Deleting file "D:.0_Starain.0_Work.8_VSO.1_Projects17\MVCCore20\ConsoleApp3\bin\Debug\netcoreapp2.0\ConsoleApp3.deps.json".
2>Target CoreCompile:

数字1、2、3、4表示进程。

另一方面,如果在 VSTS 构建任务中选中 并行构建 选项,它会向 MSBuild 命令添加 /m 参数,因此进程数是每个到计算机上的处理器数量,如果要使用自定义值,则需要取消选中该选项并在 MSBuild Arguments 输入框中指定 /m:X 参数。