Проблема с компилятором в Windows 7: в GDI + произошла общая ошибка - PullRequest
1 голос
/ 11 августа 2011

У нас есть приложение, которое нам нужно, чтобы начать тестирование и разработку в среде Windows 7. Работает нормально, компиляция под WinXP в VS2008, без проблем. Однако, когда я пошел, чтобы скомпилировать его на компьютере с Windows 7, используя VS2008 сегодня, я получаю следующую ошибку:

    Error   12  The "GenerateResource" task failed unexpectedly.
System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+.
   at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
   at System.Drawing.Image.Save(MemoryStream stream)
   at System.Drawing.Image.System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo si, StreamingContext context)
   at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder)
   at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder)
   at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph)
   at System.Resources.ResourceWriter.WriteValue(ResourceTypeCode typeCode, Object value, BinaryWriter writer, IFormatter objFormatter)
   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, List`1 inputs, List`1 outputs, Boolean sourcePath, String language, String namespacename, String resourcesNamespace, String filename, String classname, Boolean publicClass)
   at Microsoft.Build.Tasks.ProcessResourceFiles.Run(TaskLoggingHelper log, ITaskItem[] assemblyFilesList, List`1 inputs, List`1 outputs, Boolean sourcePath, String language, String namespacename, String resourcesNamespace, String filename, String classname, Boolean publicClass)
   at Microsoft.Build.Tasks.GenerateResource.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)

Я не могу за всю жизнь убить этого. Я посетил форумы msdn и обнаружил, что это проблема для многих людей, но ни MS, ни кто-либо еще не предоставили согласованного решения.

Кто-нибудь видел это раньше и исправлял? Пожалуйста, сообщите, необходимо!

Спасибо

Ответы [ 6 ]

3 голосов
/ 13 августа 2012

Я скомпилировал с использованием командной строки msbuild, и это идентифицировало местоположение проблемы.

Это был файл resx в классе, в котором было одно неиспользуемое изображение. Я удалил это, и все снова было хорошо. Теперь можно нормально строить.

2 голосов
/ 18 октября 2012

После нескольких часов устранения неполадок, я открыл и собрал проект, используя приглашение командной строки VS 2010, используя MSBUILD «мой путь к файлу решения здесь». Это обеспечило более заметную последовательность событий сборки, и я обнаружил, что мой проект завершился неудачей сразу после того, как он скомпилировал форму 16. Компиляция форм, по-видимому, проходила в порядке объектов в обозревателе решений. Поэтому я проверил следующую форму и обнаружил, что она содержит графическое поле. После этого я также проверил форму и обнаружил, что не могу открыть конструктор без ошибок (ссылка на объект не установлена ​​на экземпляр объекта). По-видимому, теперь проблема была двоякой.

Чтобы решить эту проблему, мне пришлось удалить объект графического блока из первой формы, которую я определил как проблемную (она не использовалась каким-либо образом), поскольку она оказалась поврежденной. Я обнаружил, что вторая форма с исключением нулевой ссылки использует пользовательский элемент управления. Код для конструктора пользовательского элемента управления пытался передать объект в контейнер перед вызовом InitializeComponent (). Это создало нулевую ссылку, так как контейнер не был создан в InitializeComponent при вызове проблемного кода.

После решения проблем, приведенных в предыдущем абзаце, мое решение было скомпилировано под Windows 7.

0 голосов
/ 10 июня 2019

У меня была такая же проблема.я только что использовал команду msbuild myProject.sln, и она была исправлена ​​и скомпилирована успешно, без ошибок!Теперь я могу вручную построить свое решение.нет необходимости повторного добавления моих ресурсов

0 голосов
/ 31 мая 2013

Удалите ресурсы из менеджера ресурсов (щелкните правой кнопкой мыши на каждом и удалите), затем добавьте их обратно. для меня это решит проблему.

0 голосов
/ 11 августа 2011

Используете ли вы изображения TIFF в своем приложении?

Некоторое время назад у меня также была проблема с изображениями TIFF в рамках отчетов, которые не компилируются в Win7 x64, хотя они компилируются как прелесть в Vistax86.Сообщение об ошибке также связано с GDI +.Я сохранил изображения в другом формате (PNG), и проблема исчезла.

В то время (около марта 2011 года) я сначала удостоверился, что моя Windows была обновлена, но она не решилапроблема.Так что, может быть, есть такое обновление, о котором упоминал Эрик, но тогда оно не было в Центре обновления Windows (возможно, оно более новое).

0 голосов
/ 11 августа 2011

Есть обновление GDI для Windows 7, думаю, если я не ошибаюсь. Может быть, это решит проблему. Ваше решение строится с использованием Msbuild на линии связи?

...