Постійне рішення (+ для будівельних машин)
Візуальна студія 2017
Для VS 2017 викличте такі сценарії CMD під цільовим обліковим записом Windows:
Суспільне видання
Професійне видання
Enterprise
edition
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)
Solver для серверів збірки
З іншого боку, цей код завжди працює для поточного облікового запису користувача, який його запускає (через HKEY_CURRENT_USER). Але сервери збирання часто використовують спеціальні облікові записи або локальну систему тощо.
Я виправив це на своїх складальних машинах, додавши наступний простий пакетний файл до моїх завдань збирання (Jenkins, TeamCity, CruiseControl)
VS-2015 ,
VS-2013 ,
VS-2017-Community ,
VS-2017-Professional ,
VS-2017-Enterprise
elegant solution
) в gist, IMHO.