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.

Foi útil?

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:

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

Outras dicas

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top