web-dev-qa-db-ja.com

Visual Studio内からLARGEADDRESSAWAREを設定できますか?

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

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

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

63
Michael Stum

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

editbin /largeaddressaware $(TargetPath)

「ビルド後のイベントコマンドライン:」

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

49
Yi Zhao

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

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

理解すべきもう1つのことは、(プロジェクトプロパティの[LARGEADDRESSAWARE]タブの下で)Enable the Visual Studio hosting processチェックボックスがオンになっている場合(これはデバッグモードでDebug対応アプリケーションが実行されないvshost.exeに適切なフラグが設定されていないため、デフォルトです。

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

97
Michael

これは、ビルド後にバイナリにLargeAddressAwareを設定できるNuGetパッケージです。 https://github.com/KirillOsenkov/LargeAddressAware

プログラムでフラグを設定するマネージアプリがあるため、editbin.exeは不要です。 https://github.com/KirillOsenkov/LargeAddressAware/blob/master/SetLargeAddressAware/LargeAddressAware.cs

Update:これを使用するには、パッケージをインストールし、このプロパティを.csprojに追加します。

<PropertyGroup> <LargeAddressAware>true</LargeAddressAware> </PropertyGroup>

14
Kirill Osenkov