视觉工作室错误:“GenerateResource”任务意外失败
-
08-06-2019 - |
题
当构建包含 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。它应该有足够多的内存来生成资源。
解决方案
我曾经时不时地用更大的解决方案来解决这个问题。我的策略是将较大的解决方案分解为较小的解决方案。
您还可以尝试:
其他提示
听起来像是一个错误。
http://www.codeprof.com/dev-archive/66/6-27-664019.shtm
在底部,有人建议添加:
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
到您的项目文件。看起来有点可疑,但值得一试。
万一其他人正在寻找未来......
就我而言,结果发现我的 resx 文件已损坏。
我增加了 GDI 句柄,编译错误就消失了。
但是,当我尝试运行该应用程序(带有调试器)时,我们有一个加载主屏幕的登录屏幕。登录屏幕调用了主屏幕的“show”事件...并且主对象从未被实例化 - 没有引发任何错误。
我将 resx 文件恢复到以前的文件,现在一切正常。
Visual Studio 2008、VB.Net、Windows 7
您能否尝试在项目文件的第一个 PropertyGroup 下添加此属性?
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
让我知道这是否有效。
有时我已经遇到过这个错误。您所要做的就是删除 obj 路径中的所有文件。之后清理并重建您的解决方案就完成了。
“干净的解决方案”效果很好。顶部菜单构建 - >清洁,然后构建,调试并再次发布所有工作正常。此外,像 AVAST 这样的防病毒软件最好禁用,以便无故障地发布和安装。之后重新启用。
TFS 喜欢将文件标记为只读。删除obj/x86的内容