Файл BitmapImage не обнаружил исключение (PresentationCore.resources) при построении - PullRequest
0 голосов
/ 14 сентября 2011

У меня проблема с BitmapImage в wpf.Когда я его создаю, он выдает исключение filenotfound, которое говорит, что в нем отсутствует сборка PresentationCore.resources.Но я добавил его в свой список ссылок, и он по-прежнему выдает то же исключение

Uri filename = new Uri(@"D:\barcode_zwart_wit.jpg", UriKind.Absolute);
BitmapImage image = new BitmapImage(filename); //<-- FileNotFound Exception
  • Изображение URI правильное.
  • Изображение не открывается где-то еще
  • Я проверил версию PresentationCore.resources, проблем нет.
  • Строки находятся в установщике свойства, которое сначала запускается в конструкторе usercontrol.
  • Visual Studio 2010, .net v4

Кто-нибудь знает, в чем проблема?Есть ли у PresentationCore.resources зависимости, о которых я не знаю?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Возможно, проблема в том, что цветовой профиль изображения недоступен. Используйте свойство BitmapImage.CreateOptions, чтобы игнорировать информацию о цветовом профиле, как показано ниже:

var bmp = new BitmapImage();
bmp.BeginInit();
bmp.CreateOptions = BitmapCreateOptions.IgnoreColorProfile;
bmp.UriSource = uri;
bmp.EndInit();
// Use the bmp variable for further processing and dispose it

У меня была такая же проблема с несколькими .jpg изображениями, и это решило ее.

0 голосов
/ 14 сентября 2011

Я решил это с помощью AppDomain.CurrentDomain.AssemblyResolve. это событие, которое вызывается, если определенная сборка не может быть найдена.

в конструкторе:

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

CurrentDomain_AssemblyResolve:

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    string missingAssemblyName = args.Name.Remove(args.Name.IndexOf(',');
    if ( missingAssemblyName == "PresentationCore.resources" )
    {
         string s = "C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\PresentationCore.resources.dll";
         return Assembly.LoadFile(s);
    }
    return;
}
...