LargeAddressAware Visual Studio 2015 C#
Поэтому сегодня я решил обновить 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
Какие-нибудь мысли?
4 ответа
Эта проблема возникла при удалении версии Visual Studio 2015 RC. Он не удаляет все каталоги, поэтому установка полной версии не удалась. Простое решение - удалить версию RC и перезапустить. Затем вручную удалите каталог C:\Program Files (x86)\Microsoft Visual Studio 14.0. Затем вы можете установить новую версию без каких-либо проблем.
Кредит Ханс Пассант для выявления этой проблемы.
Я вызываю сценарий cmd как 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, убедитесь, что в установщике выбрана опция " Инструменты C++". По умолчанию VS2015 устанавливает только C# и VB.net, но не C++ с его инструментами. Здесь вы должны активировать его под custom в настройках:
Если вы установите для своей платформы значение "Любой ЦП", этот флаг будет установлен для вас по умолчанию в Visual Studio 2015.
См. Компиляция C# с любыми наборами ЦП. Приложение может обрабатывать большие (>2 ГБ) адреса.
Моя проблема с этим, что я звонил 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