我有一个需要32位并且需要是/LARGEADDRESSAWARE的.net程序集。
我知道如何使用EditBin做到这一点,但我想知道Visual Studio2010中是否有内置的方法?或者,是否有人为此编写了MSBuild任务?
编辑:这是针对C#应用程序的,所以很遗憾没有链接器选项:(
发布于 2010-04-08 16:15:05
您可以将其作为后期构建任务来执行。在"Build Events“选项卡中,输入以下命令
editbin /largeaddressaware $(TargetPath)
"Post-build event“命令行中:
这就是VS2008的情况。我认为它应该以同样的方式工作在VS2010上。
发布于 2010-10-19 04:39:56
根据@RouMao的回答,您可能会收到一条错误消息,指出无法找到editbin。通过指定如下内容,确保正确设置生成后事件命令行中的环境:
call "$(VS100COMNTOOLS)..\tools\vsvars32.bat"
editbin /largeaddressaware $(TargetPath)
另一件要理解的事情是,当(在项目属性中的Debug
选项卡下)选中Enable the Visual Studio hosting process
复选框(默认情况下)时,启用LARGEADDRESSAWARE
的应用程序将不会在调试模式下运行,因为vshost.exe
没有正确标记。
取消选中该框可使用LARGEADDRESSAWARE
调试应用程序。
发布于 2019-12-23 09:30:08
如果使用以下命令编译程序集:
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit> <!--Default !false!-->
则生成的程序集将自动接收LARGE ADDRESS AWARE
标志。
使用VS 2019进行测试(根据Why does 'Any CPU (prefer 32-bit)' allow me to allocate more memory than x86 under .NET 4.5?,需要Visual Studio 2015+ )。
因此,在大多数情况下,您不需要任何特殊操作。默认情况下,您的AnyCPU程序集将在x86 + LAA下执行。
https://stackoverflow.com/questions/2597790
复制相似问题