Пытаюсь выполнить в Post -Build event такую команду:
"$(DevEnvDir)..\..\vc\bin\EditBin.exe" "$(TargetPath)" /LARGEADDRESSAWARE , но ловлю ошибку с кодом 3.
Стоит Visual Studio 2017.
Или эта штука вообще не нужна, если я собираю под Any Cpu?
Просто, решение в TFS в таком виде лежала.
Похожий вопрос задавали на английском Stack Overflow: vsvars32.bat in Visual Studio 2017.
В Visual Studio 2017 изменился не только стандартный путь по которому всегда можно было найти devenv.exe ("C:\Program Files (x86)\Microsoft Visual Studio %version%\Common7\IDE"), но в том числе и путь к утилитам.
В частности, путь к утилите editbin.exe будет примерно таким: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\bin\Hostx86\x64\editbin.exe". В этом пути несколько переменных, которые будут отличатся в зависимости от версии и редакции Visual Studio: 2017, Professional, и 14.14.26428. Кроме этого, папки Hostx86 и x64 так же могут быть заменены на Hostx64 и x86, соответственно.
Таким образом, Post-build event команда может быть вот такой: $(DevEnvDir)....\vc\Tools\MSVC\14.14.26428\bin\Hostx86\x86\editbin.exe" "$(TargetPath)" /LARGEADDRESSAWARE
Возможно, должны быть специальные макросы или переменные окружения, позволяющие задать корректный путь не вникая в значение переменных, но среди макросов похожих путей я не нашел, равно как и среди переменых которые выводит команда SET.
В дополнение к ответу @Uranus, у меня нужный файл нашёлся тут:
"$(VC_ExecutablePath_x86)\editbin.exe"
Однако, эта переменная доступна при построении проектов на C++, но не C#.
Начиная с Visual Studio 2015, приложения, собранные в режиме "AnyCPU Prefer 32bit" автоматически являются LARGEADDRESSAWARE, поэтому нет необходимости добавлять этот параметр с помощью editbin. Это изменение не документировано, но упомянуто во многих местах на форумах, например здесь.
Для справки, пометка EXE-файла LARGEADDRESSAWARE дает:
На 32-битной ОС без установленного параметра загрузки /3GB - ноль эффекта
На 32-битной ОС с установленным параметром загрузки /3GB - увеличение максимального адресного пространства с 2 Гб до 3 Гб
На 64-битной ОС - увеличение максимального адресного пространства с 2 Гб до 4 Гб
Сборка персонального компьютера от Artline: умный выбор для современных пользователей