Я получаю общую ошибку GDI + при попытке сохранить растровое изображение в MemoryStream с параметром ImageFormat.
Странно то, что это происходит только на одном из моих компьютеров, но не на других.Единственное отличие, которое я заметил, состоит в том, что компьютеру, получающему исключение, также необходимо следующее в файле App.config:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
Без этого он не может запустить приложение (которое является просто управляемымСлужба Windows).Насколько я могу судить, оба компьютера имеют одинаковую версию .NET, хотя, возможно, я проверяю неправильно.Что может быть причиной этого?
edit: Я не включил код, потому что был почти уверен, что это вызвано чем-то другим.В любом случае, вот фрагмент, где генерируется исключение:
MemoryStream stream = new MemoryStream();
Image image = Image.FromStream(new MemoryStream(File.ReadAllBytes(fullpath))); //JPG
image.Save(stream, image.RawFormat); //works fine
//image.Save(stream, ImageFormat.Png); //throws generic GDI+ error
Я должен также упомянуть, что машина, которая получает исключение, работает под управлением 32-битной Vista, в то время как другие, которые не работают под управлением 64-битнойWindows 7. Каждая машина компилирует само приложение перед его запуском.
Самое главное, все компьютеры имеют useLegacyV2RuntimeActivationPolicy="true"
в своих файлах App.config, хотя только тот, который получает ошибку GDI +, является тем, который в ней абсолютно нуждается..
Кроме того, вот версии .NET, которые я установил на обе машины:
Может работать с 64-битной Windows 7: 1.0.3705, 1.1.4322, 2.0.50727, 3.0, 3.5, 4.0.30319, Framework64: 2.0.50727, 3.0, 3.5, 4.0.30319
Получает ошибку при использовании 32-разрядной Vista: 1.0.3705, 1.1.4322, 2.0.50727, 3.0, 3.5, 4.0.30319