Постоянное решение (+ для сборочных машин)
Visual Studio 2017
Для VS 2017 вызовите следующие сценарии CMD под целевой учетной записью Windows:
Сообщество издание
Профессиональное издание
Предприятие издание
TL; DR. Заметки для бедных DisableOutOfProcBuild.exe
Microsoft предлагает решение, которое я использую для VS 2017.
DisableOutOfProcBuild.exe
не предполагает, что вы назовете его из папки установки .Таким образом, вы не можете скопировать этот файл .exe.(Кстати, если вы хотите собрать .vdproj, вы должны установить VS.) DisableOutOfProcBuild.exe
будет работать только в том случае, если в текущем каталоге CMD указано расположение для установки DisableOutOfProcBuild.exe.
Например, для VS Professional edition мы должны позвонить
CD "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild"
CALL DisableOutOfProcBuild.exe
Visual Studio 2015 и более ранние версии
от CMD для текущего пользователя Windows
Для многих людей создание / исправление в HKEY_CURRENT_USER\..
невсегда работай или работай постоянно.Пытаясь решить эту проблему, я обнаружил, что на самом деле мне нужно создать / изменить какой-то странный ключ в HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild
Но я также обнаружил, что если я буду использовать консоль CMD дляHKCU
с предложенным исправлениемREG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
это запишет значение именно в этот странный ключ HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ... , а не в HKEY_CURRENT_USER .
Итак, это работает с первого раза и навсегда.Просто используйте консоль CMD.
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
@REM (use 12.0_Config for VS2013)
Solver для серверов сборки
С другой стороны, этот код всегда работает для текущей учетной записи пользователя, которая его запускает (из-за HKEY_CURRENT_USER).Но серверы сборки часто используют выделенные учетные записи или локальную систему и т. Д.
Я исправил это на своих сборочных машинах, добавив следующий простой пакетный файл в свои задачи сборки (Jenkins, TeamCity, CruiseControl)
VS-2015 , VS-2013 , VS-2017-Community , VS-2017-Professional , VS-2017-Enterprise