LargeAddressAware Visual Studio 2015 C#

LargeAddressAware Visual Studio 2015 C#

所以今天我决定更新到 Visual Studio 2015(之前是 运行 RC 版本,没有任何困难)但现在我的项目不喜欢 /LARGEADDRESSAWARE 命令行事件。

我有一个 post-构建事件:

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

但是我收到以下错误:

The command "call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE..\tools\vsvars32.bat" editbin /largeaddressaware "C:\...\bin\Debug\Application.exe"" exited with code 9009

有什么想法吗?

我调用 cmd 脚本作为 PostBuildEvent:

IF  EXIST  "%VS140COMNTOOLS%"  CALL  "%VS140COMNTOOLS%vsvars32.bat"
IF  EXIST  "%VS120COMNTOOLS%"  CALL  "%VS120COMNTOOLS%vsvars32.bat"
IF  EXIST  "%VS110COMNTOOLS%"  CALL  "%VS110COMNTOOLS%vsvars32.bat"
IF  EXIST  "%VS100COMNTOOLS%"  CALL  "%VS100COMNTOOLS%vsvars32.bat"

editbin.exe /LARGEADDRESSAWARE MyApp.exe

根据安装的VS检查环境变量(先2015,再2013,再2012,最后2010),现在所有路径都正常了。

如果仍然找不到 .exe,请确保选择了安装程序中的 C++ Tools 选项。默认情况下,VS2015 仅安装 C# 和 VB.net,但不安装 C++ 及其工具。在这里你必须在设置中的自定义下激活它:

卸载Visual Studio 2015 RC 版时出现此问题。它不会删除所有目录,因此完整发行版的安装不成功。简单的解决办法就是卸载RC版,然后重启。然后手动删除C:\Program Files (x86)\Microsoft Visual Studio 14.0目录。然后你就可以毫无问题地安装新版本了。

感谢 Hans Passant 识别此问题。

如果您将平台设置为 "Any CPU",此标志现在默认为您在 Visual Studio 2015 年设置。

Compiling C# with Any CPU sets Application can handle large (>2GB) addresses

我的问题是,我首先从错误的位置调用 vcvarsall.bat。我已经升级到 Visual Studio 2017,vcvarsall.bat 已经搬家了。 (所以 EditBin.exe。现在有 4 个位置,尽管我改为使用路径中的任何位置。)修复它,解决问题。这是我的 post-build 文件供您查看。

:: Install C++ tools to have these installed

:: build for 32 bit     
:: VS 2012 call "$(DevEnvDir)..\..\vc\vcvarsall.bat" x86 

:: build for 64
:: VS 2012 call "$(DevEnvDir)..\..\vc\vcvarsall.bat" amd64
:: VS 2017
call "$(DevEnvDir)..\..\VC\Auxiliary\Build\vcvarsall.bat" amd64

:: "$(DevEnvDir)..\..\vc\bin\EditBin.exe" "$(TargetPath)"  /LARGEADDRESSAWARE
EditBin "$(TargetPath)"  /LARGEADDRESSAWARE