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
Другие вопросы по тегам