我有一个.net程序集需要32位,需要/ LARGEADDRESSAWARE。
我知道如何使用EditBin执行此操作,但我想知道Visual Studio 2010中是否存在内置方式?或者,有人为此编写了MSBuild任务吗?
编辑:这是一个C#应用程序,所以没有链接器选项可悲:(
您可以将其作为构建后任务执行。在“构建事件”选项卡中,输入以下命令
editbin /largeaddressaware $(TargetPath)
进入“后期构建事件命令行:”
这是VS2008的情况。我认为VS2010应该以同样的方式工作。
在@ RouMao的答案的基础上,您可能会收到一条错误消息,指出无法找到editbin。确保通过指定如下正确设置构建后事件命令行中的环境:
call "$(VS100COMNTOOLS)..\tools\vsvars32.bat"
editbin /largeaddressaware $(TargetPath)
另一件需要理解的是,启用LARGEADDRESSAWARE
的应用程序将无法在调试模式下运行(在项目属性中的Debug
选项卡下)Enable the Visual Studio hosting process
复选框被选中(默认情况下),因为vshost.exe
未正确标记。
取消选中该框以使用LARGEADDRESSAWARE
调试您的应用程序。
这是一个NuGet包,它可以在你的二进制文件构建后设置LargeAddressAware:https://github.com/KirillOsenkov/LargeAddressAware
它不需要editbin.exe,因为它有一个托管应用程序以编程方式设置标志:https://github.com/KirillOsenkov/LargeAddressAware/blob/master/SetLargeAddressAware/LargeAddressAware.cs
更新:要使用它,只需安装包并在.csproj中添加此属性:
<PropertyGroup>
<LargeAddressAware>true</LargeAddressAware>
</PropertyGroup>