【问题标题】:Visual Studio Error: The "GenerateResource" task failed unexpectedlyVisual Studio 错误:“GenerateResource”任务意外失败
【发布时间】:2010-09-06 02:44:41
【问题描述】:

在构建包含 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 内存的机器上。 TaskManager 显示 devenv.exe 工作集为 578060K,机器的整个内存分配为 1.78GB。它应该有足够多的内存来生成资源。

【问题讨论】:

标签: visual-studio out-of-memory


【解决方案1】:
【解决方案2】:

听起来像一个错误。

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

在底部,有人建议添加:

true

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

【讨论】:

    【解决方案3】:

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

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

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

    我将 resx 文件恢复到以前的文件,现在一切正常。

    Visual Studio 2008、VB.Net、Windows 7

    【讨论】:

      【解决方案4】:

      您能否尝试在项目文件的第一个 PropertyGroup 下添加此属性?

      <GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
      

      让我知道这是否有效。

      【讨论】:

        【解决方案5】:

        我曾经一次又一次地用更大的解决方案来解决这个问题。我的策略是将较大的解决方案分解为较小的解决方案。

        你也可以试试:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                猜你喜欢
                • 2011-12-09
                • 2016-02-23
                • 2019-01-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多