Mic*_*tum 63 .net c# msbuild visual-studio
我有一个.net程序集需要32位,需要/ LARGEADDRESSAWARE.
我知道如何使用EditBin执行此操作,但我想知道Visual Studio 2010中是否存在内置方式?或者,有人为此编写了MSBuild任务吗?
编辑:这是一个C#应用程序,所以没有链接器选项可悲:(
Mic*_*ael 97
在@ RouMao的答案的基础上,您可能会收到一条错误消息,指出无法找到editbin.确保通过指定如下正确设置构建后事件命令行中的环境:
call "$(VS100COMNTOOLS)..\tools\vsvars32.bat"
editbin /largeaddressaware $(TargetPath)
Run Code Online (Sandbox Code Playgroud)
另一件需要理解的是,如果在项目属性的Debug选项卡下选中了Enable the Visual Studio hosting process复选框(默认),则应用程序将无法使用LARGEADDRESSAWARE运行(因为vshost.exe未正确标记).取消选中该框以使用LARGEADDRESSAWARE调试您的应用程序.
Yi *_*hao 49
您可以将其作为构建后任务执行.在"构建事件"选项卡中,输入以下命令
editbin /largeaddressaware $(TargetPath)
Run Code Online (Sandbox Code Playgroud)
进入"后期构建事件命令行:"
这是VS2008的情况.我认为VS2010应该以同样的方式工作.
Kir*_*kov 14
这是一个NuGet包,可以在构建后在你的二进制文件上设置LargeAddressAware:https://github.com/KirillOsenkov/LargeAddressAware
它不需要editbin.exe,因为它有一个托管应用程序来以编程方式设置标志:https://github.com/KirillOsenkov/LargeAddressAware/blob/master/SetLargeAddressAware/LargeAddressAware.cs
更新: 要使用它,只需安装包并在.csproj中添加此属性:
__CODE__
小智 5
如果你编译你的程序集:
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit> <!--Default !false!-->
Run Code Online (Sandbox Code Playgroud)
比您生成的程序集将自动接收LARGE ADDRESS AWARE标志。
使用 VS 2019 测试(需要 Visual Studio 2015+,根据为什么“任何 CPU(首选 32 位)”允许我在 .NET 4.5 下分配比 x86 更多的内存?)。
因此,在大多数情况下,您不需要任何特殊操作。默认情况下,您的 AnyCPU 程序集将在 x86 + LAA 下执行。
| 归档时间: |
|
| 查看次数: |
34629 次 |
| 最近记录: |