При создании решения VS 2008 с 19 проектами я иногда получаю:
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 и запустить его заново.
Я на машине с 3 Гб оперативной памяти. TaskManager показывает рабочий набор devenv.exe равным 578060 КБ, а выделение всей памяти для машины - 1,78 ГБ. Он должен иметь более чем достаточно оперативной памяти для генерации ресурсов.
Я использовал это время от времени с большими решениями. Моя тактика заключалась в том, чтобы разбить большее решение на более мелкие.
Вы также можете попробовать:
Похоже, ошибка.
http://www.codeprof.com/dev-archive/66/6-27-664019.shtm
Внизу кто-то предлагает добавить:
<GenerateResourceNeverLockTypeAssemblies> True </ GenerateResourceNeverLockTypeAssemblies>
в файл вашего проекта. Кажется сомнительным, но стоит попробовать.
Попробуйте удалить файл .suo и заново открыть решение.
В случае, если кто-то еще смотрит в будущее ...
В моем случае оказалось, что у меня поврежденный файл resx.
Я увеличил свои дескрипторы GDI, и ошибка компиляции исчезла.
Но затем, когда я попытался запустить приложение (с помощью отладчика), у нас появился экран входа в систему, который загружает главный экран. Экран входа в систему вызвал событие "show" на главном экране ... и главный объект никогда не создавался - без возникновения ошибки.
Я вернул файл resx к предыдущему, и теперь все в порядке.
Visual Studio 2008, VB.Net, Windows 7
Можете ли вы попробовать добавить это свойство в первую группу PropertyGroup в файле проекта?
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Дай мне знать, если это работает.
Я уже проходил мимо этой ошибки иногда. Все, что вам нужно сделать, это удалить все файлы в пути obj. После этого очистите и восстановите свое решение, и все готово.
«Чистый раствор» отлично работает. Top Menu Build -> Очистить, затем собрать, отладить и опубликовать все снова работает нормально. Также антивирус как AVAST лучше всего отключить, чтобы публиковать и устанавливать без проблем. Повторно включить после.
TFS любит отмечать файлы только для чтения. удалить содержимое obj / x86