Где живет EditBin.exe?

237
01 декабря 2018, 09:00

Пытаюсь выполнить в Post -Build event такую команду:

"$(DevEnvDir)..\..\vc\bin\EditBin.exe" "$(TargetPath)" /LARGEADDRESSAWARE , но ловлю ошибку с кодом 3.

Стоит Visual Studio 2017.

Или эта штука вообще не нужна, если я собираю под Any Cpu?

Просто, решение в TFS в таком виде лежала.

Answer 1

Похожий вопрос задавали на английском 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.

Answer 2

В дополнение к ответу @Uranus, у меня нужный файл нашёлся тут:

"$(VC_ExecutablePath_x86)\editbin.exe"

Однако, эта переменная доступна при построении проектов на C++, но не C#.

Answer 3

Начиная с Visual Studio 2015, приложения, собранные в режиме "AnyCPU Prefer 32bit" автоматически являются LARGEADDRESSAWARE, поэтому нет необходимости добавлять этот параметр с помощью editbin. Это изменение не документировано, но упомянуто во многих местах на форумах, например здесь.

Для справки, пометка EXE-файла LARGEADDRESSAWARE дает:

  • На 32-битной ОС без установленного параметра загрузки /3GB - ноль эффекта

  • На 32-битной ОС с установленным параметром загрузки /3GB - увеличение максимального адресного пространства с 2 Гб до 3 Гб

  • На 64-битной ОС - увеличение максимального адресного пространства с 2 Гб до 4 Гб

READ ALSO
Запуск EXE из приложения

Запуск EXE из приложения

Есть следующий код запуска приложения Application2 из текущего Application1:

197
C# Локализация поиск строки

C# Локализация поиск строки

У меня есть несколько файлов

186
html + php что это такое?

html + php что это такое?

Возможно вопрос глупый но тем не менееКак то давно услышал где то на просторах интернета такую фразу:"сверстать страничку на php"

228
Старт сессии на другом домене при передаче информации через заголовки методом POST

Старт сессии на другом домене при передаче информации через заголовки методом POST

Пожалуйста, помогите найти ответ на вопрос, самостоятельно это сделать мне не удалосьЛогика работы такова:

217