Можно ли установить LARGEADDRESSAWARE из Visual Studio?
У меня есть сборка .net, которая должна быть 32-битной и должна быть /LARGEADDRESSAWARE.
Я знаю, как это сделать с помощью EditBin, но мне интересно, есть ли встроенный способ в Visual Studio 2010? Или, наоборот, кто-то написал задачу MSBuild для этого?
Изменить: это для приложения С#, поэтому параметры компоновщика печально: (
Ответы
Ответ 1
Вы можете сделать это как задачу Post-build. На вкладке "Build Events" введите следующую команду
editbin /largeaddressaware $(TargetPath)
в командной строке события после сборки:
Это относится к VS2008. Я думаю, что он должен работать таким же образом для VS2010.
Ответ 2
Основываясь на ответе @RouMao, вы можете получить сообщение об ошибке, указывающее, что editbin не может быть найден. Убедитесь, что среда в командной строке события после сборки настроена правильно, указав следующее:
call "$(VS100COMNTOOLS)..\tools\vsvars32.bat"
editbin /largeaddressaware $(TargetPath)
Еще одна вещь, которую следует понимать, заключается в том, что если на вкладке "Отладка" в свойствах вашего проекта флажок "Включить процесс хостинга Visual Studio" установлен (по умолчанию), ваше приложение не будет работать с LARGEADDRESSAWARE (поскольку vshost.exe не помечен правильно). Снимите этот флажок, чтобы отладить ваше приложение с помощью LARGEADDRESSAWARE.
Ответ 3
Это пакет NuGet, который может установить BigAddressAware на ваш двоичный файл после его создания: https://github.com/KirillOsenkov/LargeAddressAware
Для него не требуется файл editbin.exe, так как он имеет управляемое приложение для программного программирования: https://github.com/KirillOsenkov/LargeAddressAware/blob/master/SetLargeAddressAware/LargeAddressAware.cs
Update:
Чтобы использовать его, просто установите пакет и добавьте это свойство в свой .csproj:
<PropertyGroup>
<LargeAddressAware>true</LargeAddressAware>
</PropertyGroup>