web-dev-qa-db-ja.com

この操作を完了するのに十分なストレージが利用できません

環境:

  • Visual Studio Ultimate 2010
  • Windows XP
  • .NET 4.0を使用したWPFデスクトップアプリケーション

ビデオを再生するデスクトップアプリケーションがあります。このビデオはプロジェクトの一部であり、プロジェクトはインストーラーにパッケージ化されています。インストーラプロジェクトをビルドするときに、次のエラーメッセージが表示されることがあります。

この操作を完了するのに十分なストレージが利用できません

Visual Studioを再起動すると機能します。

これを回避する方法はありますか?インストーラーでビデオをパッケージ化するより良い方法はありますか?

20

これは通常、ビルドプロセスで多くのRAMメモリを必要とし、それを取得できない場合に発生します。

実行中のアプリケーションのいくつかを閉じてみてください。マシンにさらにRAMを追加するか、ページファイルを増やすこともできます。

13
Cosmin Pirvu

問題

私の場合、問題は、非常に大きな(1.5GB)テストファイルを埋め込みリソースとして含むテストプロジェクトにありました。私のマシンには16GB RAMがあり、これが発生したときに8GBの空き容量があったため、RAMは問題ではありませんでした。

CLRが1つのオブジェクトに対して持つ2 GBの制限に達した可能性があります。 MSBuildが内部で何をしているのかを詳しく調べることなく、コンパイル時に、埋め込みリソースがこの制限に達したオブジェクトグラフにロードされると推測することができます。

エラーメッセージは非常に役に立ちません。私が最初に考えたのは、「ディスク容量が足りなくなった」というものでした。

ソリューション

これは、ファイル検証テストプロジェクトです。要件の1つは、このサイズのファイルを処理できることです。そのため、私のチームは額面通り、テストケースで使用するためにそれを埋め込むのが合理的だと考えました。

エラーを修正するには、ファイルをネットワークに移動し(本番のバリデーターがアクセスするのと同じ方法で)、テストを単体テストではなく統合テストとしてマークします。結局のところ、単体テストは高速で実行されるはずではありませんか?

7
Daniel Dyson

Windows XPのVisual Studio 2010でC#ソリューションをコンパイルしようとすると、この質問に出会いました。 1つのプロジェクトにはかなりの数の埋め込みリソースがあり(結果のアセンブリのサイズは〜140MiBでした)、ソリューションをコンパイルできませんでした。

この操作を完了するのに十分なストレージが利用できません

ビルド出力のエラー。

この質問に対する答えは役に立たなかったが、social.msdn.Microsoftの ScottBurton42 による「 この操作を完了するのに十分なストレージが利用できない 」に対する答えを見つけた。 com。 3GBスイッチにBoot.iniスイッチを追加し、devenv.exe大規模アドレスを認識することをお勧めします。 3GBスイッチをBoot.iniファイルに追加すると、私にとってはうまくいきました(Visual Studio 2010以降のdevenv.exealready大きいと思います) -アドレス認識)。

私の答えはその答えに基づいています。


解決策1:/3GBBoot.iniスイッチを設定する

MSDNのページ メモリサポートとWindowsオペレーティングシステム は次のように述べています。

プロセスとアプリケーションの仮想アドレス空間は、/3GBスイッチでBoot.iniスイッチが使用されていない限り、依然として2 GBに制限されています。

/3GBスイッチは、プロセスヘッダーでIMAGE_FILE_LARGE_ADDRESS_AWAREを使用するアプリケーションに3 GBの仮想アドレススペースを割り当てます。このスイッチにより、アプリケーションは、2 GBを超える1 GBの追加の仮想アドレススペースに対応できます。

プロセスとアプリケーションの仮想アドレス空間は、/3GBBoot.ini fileスイッチが使用されていない限り、依然として2 GBに制限されています。次の例は、Boot.iniファイルに/ 3GBパラメーターを追加して、アプリケーションメモリのチューニングを有効にする方法を示しています。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT

[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="????" /3GB

注:前の例の「????」は、オペレーティングシステムのプログラム名です。

Windows XPでは、Boot.iniファイルを次のように変更できます。

  • システムのプロパティ→詳細設定→起動と回復→設定→システムの起動→編集

MSDNの /3GB スイッチのページには次のように記載されています。

32ビットバージョンのWindowsでは、/3GBパラメーターは4 GT RAM Tuning、ユーザーモードの仮想アドレススペースを3 GBに拡大し、カーネルモードを制限する機能を有効にしますコンポーネントを残りの1 GBに追加します。

/3GBパラメータは、Windows Server 2003、Windows XP、およびWindows 2000でサポートされています。WindowsVista以降のバージョンのWindowsでは、IncreaseUserVABCDEdit要素を使用します。

マシンを再起動すると、設定が有効になります。


解決策2:devenv.exe大規模アドレスを認識させる:

  1. Visual Studioコマンドプロンプト(またはVisual Studioのバージョンに応じて開発者コマンドプロンプト)を開きます。

  2. 次のコマンドラインを入力して実行します。

    editbin /LARGEADDRESSAWARE {path}\devenv.exe`
    

    ここで、{path}devenv.exeへのパスです(Visual Studioのショートカットのプロパティに移動して、これを見つけることができます)。

これにより、devenv.exeが2GBではなく3GBのメモリにアクセスできるようになります。

5
Wai Ha Lee

ソリューションのクリーニングと再構築がうまくいった

2
Ashkan Ghodrat

私の場合、Cドライブに残っているメモリは非常に少なかった。 Cドライブからいくつかのアイテムをクリアして、再試行しました。動いた。

1

私は答えるのが遅れるかもしれませんが、今後の参考のために、Windowsダンプファイルの設定を確認することをお勧めします(そして、おそらくnoneに設定します)。

1
6pack kid

私の場合、コードを実行していたサーバーは、並列化されたコードを処理できませんでした。

通常、次のようなセットアップを実行しています

new ParallelOptions { MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount / 2) }

変数を導入し、1に使用されたコアのロックダウンを許可すると(次のようなコードになります)、この問題は解決しました。

new ParallelOptions { MaxDegreeOfParallelism = 1 }
1
Squazz

私は答えるのに遅れていますが、他の人には役立つかもしれません私の場合、Visual Studioを再起動するだけで問題が修正されます

0
Imran Ali Khan

Visual Studioの場合、次のことを試みることができます。

  1. すべてのVisual Studioインスタンスを閉じます。
  2. 管理者モードでVisual Studio Developerツールを開きます。
  3. 案内する:
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE
  4. 以下を入力してください:
    editbin /LARGEADDRESSAWARE devenv.exe
  5. PCを再起動することも価値があります。

お役に立てれば )

0

私にとって重要な点は、アプリケーションに巨大なデータベーステンプレート(テストで大量のデータが格納されていた)を埋め込んだことです。埋め込みリソースを適切に削除し、データベースをリソースフォルダーに移動するため、この問題は発生していません。

0
Barton

この問題は、サイズが大きい* .rptファイルを削除または無効化(除外)することで修正し、レポートを最適化しました。

0
Yousef Shakouri