我可以在Visual Studio中设置LARGEADDRESSAWARE吗?

问题描述 投票:63回答:3

我有一个.net程序集需要32位,需要/ LARGEADDRESSAWARE。

我知道如何使用EditBin执行此操作,但我想知道Visual Studio 2010中是否存在内置方式?或者,有人为此编写了MSBuild任务吗?

编辑:这是一个C#应用程序,所以没有链接器选项可悲:(

c# .net visual-studio msbuild
3个回答
49
投票

您可以将其作为构建后任务执行。在“构建事件”选项卡中,输入以下命令

editbin /largeaddressaware $(TargetPath)

进入“后期构建事件命令行:”

这是VS2008的情况。我认为VS2010应该以同样的方式工作。


97
投票

在@ RouMao的答案的基础上,您可能会收到一条错误消息,指出无法找到editbin。确保通过指定如下正确设置构建后事件命令行中的环境:

call "$(VS100COMNTOOLS)..\tools\vsvars32.bat"
editbin /largeaddressaware $(TargetPath)

另一件需要理解的是,启用LARGEADDRESSAWARE的应用程序将无法在调试模式下运行(在项目属性中的Debug选项卡下)Enable the Visual Studio hosting process复选框被选中(默认情况下),因为vshost.exe未正确标记。

取消选中该框以使用LARGEADDRESSAWARE调试您的应用程序。


13
投票

这是一个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>

© www.soinside.com 2019 - 2024. All rights reserved.