7

19 個のプロジェクトで VS 2008 ソリューションを構築すると、次のようになることがあります。

The "GenerateResource" task failed unexpectedly.
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.IO.MemoryStream.set_Capacity(Int32 value)
   at System.IO.MemoryStream.EnsureCapacity(Int32 value)
   at System.IO.MemoryStream.WriteByte(Byte value)
   at System.IO.BinaryWriter.Write(Byte value)
   at System.Resources.ResourceWriter.Write7BitEncodedInt(BinaryWriter store, Int32 value)
   at System.Resources.ResourceWriter.Generate()
   at System.Resources.ResourceWriter.Dispose(Boolean disposing)
   at System.Resources.ResourceWriter.Close()
   at Microsoft.Build.Tasks.ProcessResourceFiles.WriteResources(IResourceWriter writer)
   at Microsoft.Build.Tasks.ProcessResourceFiles.WriteResources(String filename)
   at Microsoft.Build.Tasks.ProcessResourceFiles.ProcessFile(String inFile, String outFile)
   at Microsoft.Build.Tasks.ProcessResourceFiles.Run(TaskLoggingHelper log, ITaskItem[] assemblyFilesList, ArrayList inputs, ArrayList outputs, Boolean sourcePath, String language, String namespacename, String resourcesNamespace, String filename, String classname, Boolean publicClass)
   at Microsoft.Build.Tasks.GenerateResource.Execute()
   at Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask(EngineProxy engineProxy, ItemBucket bucket, TaskExecutionMode howToExecuteTask, ITask task, Boolean& taskResult)   C:\Windows\Microsoft.NET\Framework\v3.5

通常、VS が約 4 時間実行された後に発生します。VS を適切にコンパイルする唯一の方法は、VS を閉じてから再起動することです。

私は3GBのRAMを搭載したマシンを使用しています。TaskManager は、devenv.exe ワーキング セットが 578060K であることを示しており、マシンのメモリ割り当て全体は 1.78GB です。リソースを生成するのに十分な RAM が必要です。

4

8 に答える 8

7

https://social.msdn.microsoft.com/Forums/vstudio/en-US/5154ef26-ccfe-44d5-a322-6804b61ac774/systemoutofmemoryexception?forum=clrから:

.suo ファイルを削除して、ソリューションを再度開いてみてください。

于 2008-08-18T18:41:57.240 に答える
1

プロジェクト ファイルの最初の PropertyGroup の下にこのプロパティを追加してみてください。

<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>

それがうまくいくかどうか教えてください。

于 2011-12-30T13:04:02.853 に答える
1

他の誰かが将来を見ている場合...

私の場合、破損した resx ファイルがあることがわかりました。
GDI ハンドルを増やしたところ、コンパイル エラーはなくなりました。

しかし、アプリを (デバッガーで) 実行しようとすると、メイン画面をロードするログイン画面が表示されます。ログイン画面はメイン画面の「表示」イベントを呼び出しました...そしてメインオブジェクトはインスタンス化されませんでした-エラーは発生しませんでした。

resx ファイルを以前のものに戻しましたが、すべて問題ありません。

Visual Studio 2008、VB.Net、Windows 7

于 2011-01-26T23:31:19.710 に答える
1

バグのようですね。

http://www.codeprof.com/dev-archive/66/6-27-664019.shtm

一番下に向かって、誰かが追加することを提案します:

<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>

プロジェクトファイルに。ちょっと疑わしいようですが、試してみる価値があります。

于 2008-08-18T18:40:39.647 に答える
0

以前は、より大きなソリューションでこれを何度もヒットしていました。私の戦術は、大きなソリューションを小さなソリューションに分割することでした。

あなたも試すことができます:

http://stevenharman.net/blog/archive/2008/04/29/hacking-visual-studio-to-use-more-than-2gigabytes-of-memory.aspx

于 2008-08-18T18:36:45.270 に答える
0

「クリーンソリューション」は正常に機能します。トップ メニュー Build ->Clean を実行すると、ビルド、デバッグ、公開がすべて正常に機能するようになります。また、AVAST などのウイルス対策を無効にして公開し、問題なくインストールすることをお勧めします。後に再度有効にします。

于 2015-12-17T10:27:51.337 に答える
0

私は時々このエラーを通り過ぎました。必要なのは、obj パス内のすべてのファイルを削除することだけです。その後、ソリューションをクリーンアップして再構築すれば完了です。

于 2015-12-16T11:58:54.400 に答える