Постоянное решение (+ для сборочных машин)
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 мы должны вызвать
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)
Решатель для серверов сборки
С другой стороны, этот код всегда работает для текущей учетной записи пользователя, которая его запускает (из-за HKEY_CURRENT_USER). Но сборочные серверы часто используют выделенные учетные записи или локальную систему и т. Д.
Я исправил это на своих сборочных машинах, добавив следующий простой командный файл в свои задачи сборки (Jenkins, TeamCity, CruiseControl)
VS-2015 ,
VS-2013 ,
VS-2017-Сообщество ,
VS-2017-Профессиональный ,
VS-2017-Предприятие
elegant solution
) в суть, ИМХО.