Erro do Visual Studio:A tarefa “GenerateResource” falhou inesperadamente
-
08-06-2019 - |
Pergunta
Ao construir uma solução VS 2008 com 19 projetos, às vezes recebo:
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
Geralmente acontece após o VS estar em execução há cerca de 4 horas;a única maneira de fazer com que o VS compile corretamente é fechá-lo e iniciá-lo novamente.
Estou em uma máquina com 3GB de Ram.TaskManager mostra o conjunto de trabalho devenv.exe como 578060K e toda a alocação de memória para a máquina é 1,78 GB.Deve ter memória RAM mais que suficiente para gerar os recursos.
Solução
Eu costumava acertar isso de vez em quando com soluções maiores.Minha tática era dividir a solução maior em soluções menores.
Você também pode tentar:
Outras dicas
Tente excluir o arquivo .suo e reabrir a solução.
Parece um bug.
http://www.codeprof.com/dev-archive/66/6-27-664019.shtm
Na parte inferior, alguém sugere adicionar:
<GenerateResourceNeverLockTypeAssemblies>verdadeiro</GenerateResourceNeverLockTypeAssemblies>
para o arquivo do seu projeto.Parece meio duvidoso, mas vale a pena tentar.
Caso alguém esteja olhando para o futuro...
No meu caso, descobri que eu tinha um arquivo resx corrompido.
Aumentei meus identificadores GDI e o erro de compilação desapareceu.
Mas então, quando tentei executar o aplicativo (com o depurador), temos uma tela de login que carrega a tela principal.A tela de login chamou o evento "show" da tela principal...e o objeto principal nunca foi instanciado - sem nenhum erro sendo gerado.
Reverti o arquivo resx para um anterior e está tudo bem agora.
Visual Studio 2008, VB.Net, Windows 7
Você pode tentar adicionar esta propriedade no primeiro PropertyGroup em seu arquivo de projeto?
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Deixe-me saber se isso funciona.
Já passei por esses erros algumas vezes.Tudo o que você deve fazer é excluir todos os arquivos no caminho obj.Depois disso, limpe e reconstrua sua solução e pronto.
"Solução limpa" funciona bem.Construção do menu superior -> Limpe, construa, depra e publique tudo funcionando bem novamente.Também antivírus como o AVAST são melhor desativados para publicar e instalar sem problemas.Reative depois.
O TFS gosta de marcar os arquivos como somente leitura.exclua o conteúdo de obj/x86