这真的很奇怪,而且是第一次发生。
我在商店里有一个版本的应用程序。下一个版本几乎没有UI更改。进行了大量的重新安排。
现在,对于用xaml编写的文本块,当我尝试分配一些文本时,我会得到一个NullReferenceException。InitilizeComponent是在我赋值之前调用的,那么文本块如何保持为null呢!
<Grid x:Name="AdsDialog" Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Name="statusPreview1" Text=" " Width="240" TextAlignment="Center" Foreground="#FF121212" FontFamily="{StaticResource CicleSemi}" MaxWidth="250" MaxHeight="70" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" Margin="0,0,0,3" />
<TextBlock Name="statusPreview" Text="" Width="240" TextAlignment="Center" Foreground="#FF121212" FontFamily="{StaticResource CicleSemi}" MaxWidth="250" MaxHeight="70" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" Margin="0,0,0,3" />
</StackPanel>
</Grid>
当我重新构建应用程序时,错误消失了。但如果我为现有用户推出更新,很可能会抛出异常!
StatusPreview1是新的TextBlock。
有人请帮忙!
虽然我不能真正解释为什么您首先得到这个null异常,但您的担忧是没有根据的。更新后,用户将拥有与您完全相同的二进制内容。只有存储在应用程序存储中的数据才会在更新过程中引发问题。
很可能,编译器没有注意到您的一些更改,也没有重新生成obj文件夹中的文件(您是否偶然更改了计算机的系统日期?)。当进行完全重建时,编译器会停止尝试确定哪些文件需要重新生成,并从头开始编译所有文件。
我通过在Release
模式而不是调试模式下运行它来解决这个问题,所以我想以前的版本被重写了,或者可能丢失的东西被更新了,一切都正常!