Visual Studio错误:“GenerateResource”任务意外失败

时间:2008-08-18 18:25:14

标签: visual-studio out-of-memory

在构建包含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来生成资源。

8 个答案:

答案 0 :(得分:7)

答案 1 :(得分:1)

您可以尝试在项目文件中的第一个PropertyGroup下添加此属性吗?

<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>

如果有效,请告诉我。

答案 2 :(得分:1)

如果其他人正在寻找未来......

就我而言,原来我的resx文件已损坏 我增加了我的GDI句柄,编译错误就消失了。

但是当我尝试运行应用程序(使用调试器)时, 我们有一个加载主屏幕的登录屏幕。登录屏幕称为主屏幕的“show”事件......并且主对象从未实例化 - 没有引发错误。

我将resx文件恢复为之前的文件,现在一切都很好。

Visual Studio 2008,VB.Net,Windows 7

答案 3 :(得分:1)

听起来像个错误。

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

有人建议添加:

  

&LT; GenerateResourceNeverLockTypeAssemblies&GT;真&LT; / GenerateResourceNeverLockTypeAssemblies&GT;

到你的项目文件。看起来有点可疑,但值得一试。

答案 4 :(得分:0)

我有时已经过了这个错误。您所要做的就是删除obj路径中的所有文件。之后,清理并重建您的解决方案并完成。

答案 5 :(得分:0)

“清洁解决方案”工作正常。顶部菜单构建 - &gt;清理,然后构建,调试和 再次公布所有工作。另外像AVAST这样的杀毒软件最好禁用发布和安装无故障。之后重新启用。

答案 6 :(得分:0)

TFS喜欢将文件标记为只读。 删除obj / x86的内容

答案 7 :(得分:0)

我过去经常使用更大的解决方案。我的策略是将更大的解决方案分解为更小的解决方案。

您也可以尝试:

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