У меня есть приложение WPF .Net 4.0, которое до недавнего времени работало отлично под WinPE 4.0. Я добавил код, показанный ниже, и он сломал приложение при запуске под WinPE 4.0. Обратите внимание, что приложение все еще прекрасно работает под Windows 7 x64 и Windows, 2012.Почему я получаю это исключение в WinPE 4.0, но не Windows 7/Windows 2012?
[ValueConversion(typeof(string), typeof(bool))]
public class HeaderToImageConverter : IValueConverter
{
public static HeaderToImageConverter Instance =
new HeaderToImageConverter();
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if ((value as string).Contains("corp.com"))
{
Uri uri = new Uri
("pack://application:,,,/Images/DeployWiz_Network.png");
BitmapImage source = new BitmapImage();
source.BeginInit();
source.UriSource = uri;
source.DecodePixelHeight = 40;
source.EndInit();
return source;
}
else
{
Uri uri = new Uri
("pack://application:,,,/Images/ou2.png");
BitmapImage source = new BitmapImage();
source.BeginInit();
source.UriSource = uri;
source.DecodePixelHeight = 20;
source.EndInit();
return source;
}
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotSupportedException("Cannot convert back");
}
}
Этот код позволяет мне использовать другое изображение в моем контроле Treeview на основе содержимого элемента TreeView.
При выполнении этого под WinPE, я получаю следующее исключение:
Итак, я поставил недостающие .DLL в той же папке, как мой EXE-файл, а затем я получаю это исключение:
есть ли что-то в стиле фанк о .dll, который не вызывает его на работу в WinPE? Есть ли какой-либо другой класс, который я могу использовать помимо BitmapImage в WPF для достижения моих целей и избежать этого .dll? Является ли BitmapImage даже классом, который нуждается в этом .dll? Я предполагаю, что это потому, что это единственный новый код, который я добавил, который разбивает мое приложение.
Я скопировал mscms.dll из моего C: \ Windows \ system32 в ту же папку, что и мой EXE-файл, и это не сработало. Итак, я скопировал файл mscms.dll из своей папки c: \ windows \ syswow64 в ту же папку, что и мой .exe, и он все еще не работает. Что еще я могу попробовать? Я использую 64-разрядную WinPE. – Dbloom
Вам нужно проверить, какие каталоги исследуются при попытке загрузить mscms.dll, возможно, это не обязательно будет выглядеть в вашем каталоге приложений. Вы можете использовать Fusion Log Viewer для просмотра любых сбоев и почему: http://msdn.microsoft.com/en-us/library/e74a18c4(v=VS.100).aspx ... http: //blogs.msdn .com/б/suzcook/архив/2003/05/29/57120.aspx –