66

32ビットである必要があり、である必要がある.NETアセンブリがあります/LARGEADDRESSAWARE

でこれを行う方法は知っていますがEditBin、Visual Studio 2010に組み込みの方法があるのでしょうか?または、誰かがこのためのMSBuildタスクを作成しましたか?

編集:これはC#アプリ用なので、残念ながらリンカーオプションはありません:(

4

4 に答える 4

98

@RouMaoの回答に基づいて、editbinが見つからないというエラーメッセージが表示される場合があります。次のように指定して、ビルド後のイベントコマンドラインで環境が正しく設定されていることを確認します。

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

もう1つ理解しておくべきことは、 (プロジェクトプロパティのタブの下で)チェックボックスがオンになっている場合(デフォルトでは)、LARGEADDRESSAWARE有効なアプリケーションはデバッグモードで実行されないことです。これは、が適切にフラグ付けされていないためです。DebugEnable the Visual Studio hosting processvshost.exe

を使用してアプリケーションをデバッグするには、このボックスのチェックを外しますLARGEADDRESSAWARE

于 2010-10-18T20:39:56.127 に答える
50

ビルド後のタスクとして実行できます。[ビルドイベント]タブで、次のコマンドを入力します

editbin /largeaddressaware $(TargetPath)

「ビルド後のイベントコマンドライン」に追加します。

これはVS2008の場合です。VS2010でも同じように動作するはずです。

于 2010-04-08T08:15:04.717 に答える
20

これは、ビルド後にバイナリに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>
于 2017-07-19T06:33:13.030 に答える
6

アセンブリを次のコマンドでコンパイルする場合:

<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で実行されます。

于 2019-12-23T01:30:08.377 に答える