Мы разрабатываем приложение WPF для .NET 4.
Однажды клиент сказал мне, что новая версия не работает (приложение просто закрывается при запуске) на его машине с Windows 7, и он нашел журнал исключений в средстве просмотра событий Windows:
Application: myapp.exe Framework Version: v4.0.30319 Description:
The process was terminated due to an unhandled exception. Exception Info: System.Windows.Markup.XamlParseException
Stack: at System.Windows.Markup.XamlReader.RewrapException(System.Exception, System.Xaml.IXamlLineInfo, System.Uri)
at System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader, Boolean, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri)
at System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, Boolean)
at System.Windows.Application.LoadBamlStreamWithSyncInfo(System.IO.Stream, System.Windows.Markup.ParserContext)
at ... (I guess no point to continue...)
Эта проблема сводит меня с ума, потому что ни я, ни другой разработчик не можем воспроизвести ее на наших машинах, и мы не можем воспроизвести ее даже на чистой установке Windows 7 в VirtualBox.
Когда мы попытались найти изменения, которые сломали приложение для клиента, мы нашли оскорбительный фрагмент. Вот разница:
Это отлично работает:
<ComboBox x:Name="comboBoxZoom" Margin="130,10,0,0" HorizontalAlignment="Left" Width="40" FontFamily="Arial" FontSize="12" VerticalAlignment="Top" TabIndex="1" Panel.ZIndex="2" />
Это ломает:
<ComboBox x:Name="comboBoxZoom" Style="{StaticResource comboBoxStyle}" Margin="130,10,0,0" HorizontalAlignment="Left" Width="40" FontFamily="Arial" FontSize="12" VerticalAlignment="Top" TabIndex="1" Panel.ZIndex="2" />
По сути разница только
Style="{StaticResource comboBoxStyle}"
но этот стиль использовался в других частях нашего приложения раньше без каких-либо проблем! И тот же файл, который вызывает это исключение, содержит множество других Style="{StaticResource someotherstyle}" и они отлично работают на клиентской машине.
Все эти стили находятся в одном файле ControlStyles.xaml. comboBoxStyle — это модифицированный стиль, скопированный с какого-то веб-сайта, похожий на этот: " rel="nofollow">http://social.msdn.microsoft.com/Forums/nl/wpf/thread/53134b87-1a99-4998-a1fb-b3d8a9bd2773
Почему Style="{StaticResource comboBoxStyle}" приводит к сбою моего приложения только на определенных компьютерах и как исправить эту ошибку?
.dump /mfth filename.dmp
. В качестве альтернативы используйте инструмент Sysinternal procdump (technet.microsoft.com/en-us/sysinternals /dd996900.aspx); обязательно укажите-ma
или-mp
, чтобы аварийный дамп содержал всю память. - person   schedule 02.06.2012