32ビットである必要があり、である必要がある.NETアセンブリがあります/LARGEADDRESSAWARE
。
でこれを行う方法は知っていますがEditBin
、Visual Studio 2010に組み込みの方法があるのでしょうか?または、誰かがこのためのMSBuildタスクを作成しましたか?
編集:これはC#アプリ用なので、残念ながらリンカーオプションはありません:(
32ビットである必要があり、である必要がある.NETアセンブリがあります/LARGEADDRESSAWARE
。
でこれを行う方法は知っていますがEditBin
、Visual Studio 2010に組み込みの方法があるのでしょうか?または、誰かがこのためのMSBuildタスクを作成しましたか?
編集:これはC#アプリ用なので、残念ながらリンカーオプションはありません:(
@RouMaoの回答に基づいて、editbinが見つからないというエラーメッセージが表示される場合があります。次のように指定して、ビルド後のイベントコマンドラインで環境が正しく設定されていることを確認します。
call "$(VS100COMNTOOLS)..\tools\vsvars32.bat"
editbin /largeaddressaware $(TargetPath)
もう1つ理解しておくべきことは、 (プロジェクトプロパティのタブの下で)チェックボックスがオンになっている場合(デフォルトでは)、LARGEADDRESSAWARE
有効なアプリケーションはデバッグモードで実行されないことです。これは、が適切にフラグ付けされていないためです。Debug
Enable the Visual Studio hosting process
vshost.exe
を使用してアプリケーションをデバッグするには、このボックスのチェックを外しますLARGEADDRESSAWARE
。
ビルド後のタスクとして実行できます。[ビルドイベント]タブで、次のコマンドを入力します
editbin /largeaddressaware $(TargetPath)
「ビルド後のイベントコマンドライン」に追加します。
これはVS2008の場合です。VS2010でも同じように動作するはずです。
これは、ビルド後にバイナリにLargeAddressAwareを設定できるNuGetパッケージです:https ://github.com/KirillOsenkov/LargeAddressAware
プログラムでフラグを設定するためのマネージドアプリがあるため、editbin.exeは必要ありません:https ://github.com/KirillOsenkov/LargeAddressAware/blob/master/SetLargeAddressAware/LargeAddressAware.cs
更新: これを使用するには、パッケージをインストールして、このプロパティを.csprojに追加するだけです。
<PropertyGroup>
<LargeAddressAware>true</LargeAddressAware>
</PropertyGroup>
アセンブリを次のコマンドでコンパイルする場合:
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit> <!--Default !false!-->
結果のアセンブリが自動的にLARGE ADDRESS AWARE
フラグを受け取ります。
VS 2019でテスト済み( 「任意のCPU(32ビットを推奨)」で.NET 4.5でx86よりも多くのメモリを割り当てることができるのはなぜですか?)のようにVisual Studio 2015+が必要です)。
したがって、ほとんどの場合、特別なアクションは必要ありません。AnyCPUアセンブリは、デフォルトでx86+LAAで実行されます。