LargeAddressAware Visual Studio 2015 С#
Итак, сегодня я решил, что обновляюсь до Visual Studio 2015 (ранее не запускал RC-версию без каких-либо трудностей), но теперь моему проекту не нравится событие командной строки largeaddressaware.
У меня есть событие после сборки:
call "$(DevEnvDir)..\tools\vsvars32.bat"
editbin /largeaddressaware "$(TargetPath)"
Однако я получаю следующую ошибку:
Команда "вызов" C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE..\tools\vsvars32.bat "editbin/largeaddressaware" C: \...\bin\Debug\Application.exe "" вышел с кодом 9009
Любые мысли?
Ответы
Ответ 1
Проблема была устранена при удалении версии Visual Studio 2015 RC. Он не удаляет все каталоги, поэтому установка полной версии не выполняется. Простое решение - удалить версию RC и перезапустить. Затем вручную удалите каталог C:\Program Files (x86)\Microsoft Visual Studio 14.0. Затем вы можете установить новую версию без каких-либо проблем.
Credit Hans Passant для определения этой проблемы.
Ответ 2
Я называю cmd script как PostBuildEvent:
IF EXIST "%VS140COMNTOOLS%" CALL "%VS140COMNTOOLS%vsvars32.bat"
IF EXIST "%VS120COMNTOOLS%" CALL "%VS120COMNTOOLS%vsvars32.bat"
IF EXIST "%VS110COMNTOOLS%" CALL "%VS110COMNTOOLS%vsvars32.bat"
IF EXIST "%VS100COMNTOOLS%" CALL "%VS100COMNTOOLS%vsvars32.bat"
editbin.exe /LARGEADDRESSAWARE MyApp.exe
Он проверяет переменную среды в соответствии с установленным VS (первые 2015, следующий 2013, следующий 2012 и, наконец, 2010), и теперь все пути в порядке.
Если он все еще не может найти .exe, убедитесь, что выбран параметр С++ Tools в установщике. По умолчанию VS2015 устанавливает только С# и VB.net, но не С++ с его инструментами. Здесь вы должны активировать его под заказ в настройке:
![введите описание изображения здесь]()
Ответ 3
Если вы установите платформу на "Любой процессор", этот флаг будет установлен по умолчанию в Visual Studio 2015.
См. Компиляция С# с любыми наборами процессоров. Приложение может обрабатывать большие ( > 2GB) адреса.
Ответ 4
Моя проблема с этим, что я сначала вызывал vcvarsall.bat
из неправильного местоположения. Я обновился до Visual Studio 2017, и vcvarsall.bat
переместился. (Так было EditBin.exe
. В настоящее время есть 4 местоположения, хотя я изменил использование того, что было на пути.) Исправлено это, исправлена проблема. Здесь мой пост файл сборки для вашей цели.
:: Install C++ tools to have these installed
:: build for 32 bit
:: VS 2012 call "$(DevEnvDir)..\..\vc\vcvarsall.bat" x86
:: build for 64
:: VS 2012 call "$(DevEnvDir)..\..\vc\vcvarsall.bat" amd64
:: VS 2017
call "$(DevEnvDir)..\..\VC\Auxiliary\Build\vcvarsall.bat" amd64
:: "$(DevEnvDir)..\..\vc\bin\EditBin.exe" "$(TargetPath)" /LARGEADDRESSAWARE
EditBin "$(TargetPath)" /LARGEADDRESSAWARE