Уверенность при параллельной сборке в VSTS

Я рассматриваю возможность включения:

Построить параллельно

Я хотел бы знать, как сборка происходит в Visual Studio локально, с теорией, согласно которой, если она работает нормально локально параллельно, я должен быть в достаточной безопасности в VSTS.

В старые времена параллельная сборка была чем-то, что можно было включить с помощью командной строки msbuild voodoo, и по моему опыту со сложными проектами это редко использовало другие ядра ЦП.

Но в Visual Studio 2017 это очень просто, и теперь у меня есть хороший новый проект (счастливые дни):

максимальное количество сборок

Могу ли я узнать из выходных данных сборки Visual Studio, сколько проектов на самом деле было построено параллельно, чтобы я был уверен в настройке VSTS?


person Alex KeySmith    schedule 04.10.2017    source источник


Ответы (1)


Конечно, обратитесь к этим шагам, чтобы изменить уровень детализации вывода MSBuild (в том же окне на скриншоте):

  1. Инструменты=>Параметры
  2. Выберите «Проекты и решения» => «Сборка и запуск».
  3. Выберите «Нормальный» в подробностях вывода сборки проекта MSBuild.

Тогда журнал сборки в окне вывода VS будет таким:

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:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.deps.json".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.runtimeconfig.json".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.runtimeconfig.dev.json".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.dll".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.pdb".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.csprojResolveAssemblyReference.cache".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.csproj.CoreCompileInputs.cache".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.AssemblyInfoInputs.cache".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.AssemblyInfo.cs".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp1\obj\Debug\netcoreapp2.0\ConsoleApp1.dll".
2>  Deleting file "D:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\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:\1.0_Starain\1.0_Work\4.8_VSO\1.1_Projects\2017\MVCCore20\ConsoleApp3\bin\Debug\netcoreapp2.0\ConsoleApp3.deps.json".
2>Target CoreCompile:

Цифры 1, 2, 3, 4 означают процессы.

С другой стороны, он добавляет параметр /m к команде MSBuild, если отметьте параметр Build in Parallel в задаче сборки VSTS, поэтому количество процессов соответствует количеству процессоров на компьютере, если вы хотите чтобы использовать пользовательское значение, вам нужно снять этот флажок и указать параметр /m:X в поле ввода Аргументы MSBuild.

person starian chen-MSFT    schedule 05.10.2017
comment
Отличный совет спасибо! У меня было ощущение, что это будет в выходных данных сборки, я сделал ошибку, включив детализацию, и это поразило меня :-) Я предполагаю, что когда числа превышают количество ядер, это подсчет процессов (угадывание процесса изоляции какая-то)? - person Alex KeySmith; 05.10.2017
comment
Жаль, что я не знал об этой жемчужине еще в мега-дни .sln, использование ЦП намекало, что это не было параллельно, но я уверен, что некоторые части были. - person Alex KeySmith; 05.10.2017