我们开发了一款UWP应用程序,可以在大多数设备上正常运行。但是,客户已使用Windows 10 1511管理设备,并且应用程序在启动后立即崩溃。我们无法将VS调试器附加到它,因此我们使用windbg来启动和破坏应用程序。从我所看到的,下面的windbg的输出是应用程序崩溃的地方。
应用程序启动事件被剥离到几乎为空,因此启动后没有代码运行,但应用程序仍然崩溃。
知道如何进一步跟踪这个吗?
感谢
ModLoad: 00007ffe`ec020000 00007ffe`ec27f000 C:\Windows\SYSTEM32\dwrite.dll
ModLoad: 00007ffe`cfef0000 00007ffe`d0075000 C:\Windows\System32\Windows.Globalization.dll
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
windows\dxaml\xcp\components\deferral\customwriterruntimeobjectcreator.cpp(222)\Windows.UI.Xaml.dll!00007FFED0E99DA7: (caller: 00007FFED0B7A503) Exception(1) tid(2278) 80004005 Unspecified error
(241c.2278): C++ EH exception - code e06d7363 (first chance)
(241c.2278): C++ EH exception - code e06d7363 (first chance)
windows\dxaml\xcp\core\core\elements\style.cpp(582)\Windows.UI.Xaml.dll!00007FFED0D851D9: (caller: 00007FFED0BFB365) ReturnHr(1) tid(2278) 80004005 Unspecified error
windows\dxaml\xcp\components\deferral\customwriterruntimeobjectcreator.cpp(113)\Windows.UI.Xaml.dll!00007FFED0DEEE15: (caller: 00007FFED0B0B954) Exception(2) tid(2278) 80004005 Unspecified error
(241c.2278): C++ EH exception - code e06d7363 (first chance)
(241c.2278): C++ EH exception - code e06d7363 (first chance)
windows\dxaml\xcp\components\resources\resourcedictionary2.cpp(48)\Windows.UI.Xaml.dll!00007FFED0D67F6D: (caller: 00007FFED0B67966) ReturnHr(2) tid(2278) 80004005 Unspecified error
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
(241c.2278): CLR exception - code e0434352 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
ModLoad: 00007ffe`ea590000 00007ffe`ea5f8000 C:\Windows\System32\mscoree.dll
ModLoad: 00007ffe`e9630000 00007ffe`e96cd000 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll
ModLoad: 00007ffe`ea590000 00007ffe`ea5f8000 C:\Windows\System32\mscoree.dll
ModLoad: 00007ffe`e9630000 00007ffe`e96cd000 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll
(241c.2278): CLR exception - code e0434352 (first chance)
(241c.2278): CLR exception - code e0434352 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
ntdll!NtWaitForMultipleObjects+0x14:
00007ffe`f7b25c24 c3 ret
0:000> g
^ No runnable debuggees error in 'g'
我做了进一步的测试并且它出来了,当我删除其中包含一些xaml样式的共享字典的引用时,即使在1511上,该应用程序也可以工作。我检查了所有引用并且玩了但是没有一个它可以在1511上工作。我真的不能看到1607年引入的1511中还没有的东西。再次,一切都在1607& 1703年建立。这是代码:
的App.xaml
<Application
x:Class="XXXXXXXXXXXXXXXXXXXXXX"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="XXXXXXXXXXXXXXXXXXXX"
RequestedTheme="Light">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///SDX.Library/SdxStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Styles.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="SdxColors.xaml" />
<ResourceDictionary Source="SdxControls.xaml" />
</ResourceDictionary.MergedDictionaries>
SdxColors.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="DarkGrey" Color="#FF333333"/>
<SolidColorBrush x:Key="DarkGrey40p" Color="#FFADADAD"/>
<SolidColorBrush x:Key="DarkGrey80p" Color="#5C5C5C"/>
<SolidColorBrush x:Key="InteractionBlue" Color="#FF1781E3"/>
<SolidColorBrush x:Key="BlueRollover" Color="#FF0851DA"/>
<SolidColorBrush x:Key="Successfull" Color="#FF25B252" />
<SolidColorBrush x:Key="Warning" Color="#FFFF8B2E" />
<SolidColorBrush x:Key="Peppermint" Color="#FF0EABA9" />
SdxControls.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
<FontFamily x:Key="TheSansB4SemiLight">Assets/Fonts/TheSansB_400_.ttf#TheSans B4 SemiLight</FontFamily>
<FontFamily x:Key="TheSansB5Plain">Assets/Fonts/TheSansB_500_.ttf#TheSans B5 Plain</FontFamily>
<Style TargetType="Button">
<Setter Property="Background" Value="{ThemeResource InteractionBlue}"/>
<Setter Property="Foreground" Value="{ThemeResource ButtonForeground}"/>
<Setter Property="BorderBrush" Value="{ThemeResource ButtonBorderBrush}"/>
<Setter Property="BorderThickness" Value="{ThemeResource ButtonBorderThemeThickness}"/>
<Setter Property="Padding" Value="32,8,32,8"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontFamily" Value="{StaticResource TheSansB4SemiLight}"/>
<Setter Property="FontWeight" Value="Normal"/>
<Setter Property="FontSize" Value="18"/>
<Setter Property="UseSystemFocusVisuals" Value="False"/>
<Setter Property="FocusVisualMargin" Value="-3"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="RootGrid" Background="{TemplateBinding Background}" CornerRadius="5" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Target="RootGrid.(Panel.Background)" Value="{StaticResource InteractionBlue}"/>
</VisualState.Setters>
<Storyboard>
<PointerUpThemeAnimation Storyboard.TargetName="RootGrid"/>
</Storyboard>
</VisualState>
<VisualState x:Name="PointerOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BlueRollover}"/>
</ObjectAnimationUsingKeyFrames>
<PointerUpThemeAnimation Storyboard.TargetName="RootGrid"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BlueRollover}"/>
</ObjectAnimationUsingKeyFrames>
<PointerDownThemeAnimation Storyboard.TargetName="RootGrid"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource InteractionBlue}"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Duration="0" To="0.4" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="RootGrid" d:IsOptimized="True"/>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ContentPresenter" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Foreground="White"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:4)
听起来您正在使用较新版本的SDK重新模板化Button控件。它可能引用了10586上不存在的资源。您需要使用旧版本重新进行重新模板化。最简单的方法是从generic.xaml复制/粘贴Style,你可以在这里找到:
C:\ Program Files(x86)\ Windows Kits \ 10 \ DesignTime \ CommonConfiguration \ Neutral \ UAP
如果安装了10586 SDK,则应看到“10.0.10586.0”文件夹。在那里,你会发现\ Generic \ generic.xaml。打开该文件,找到基本的Button样式。将整个样式复制/粘贴到SDXControls.xaml中,替换现在的样式。
这是模板的向后兼容版本。如果一切顺利,您的应用程序不应再在10586上崩溃。
从那里,您可以调整模板以满足您的设计需求。
提示:您还可以在Style中添加“x:Key”属性,然后在Buttons上显式引用Style作为StaticResource。