发布版本中的抽象页面出现问题



情况

我为我的UWP应用程序制作了一个摘要PageTestPage。这个页面包含一些抽象项目,在这个简化的例子中只是一个string

MVCE可以在中找到

C#代码:

public abstract partial class TestPage : Page
{
public abstract string AbstractName { get; }
public TestPage()
{
InitializeComponent();
}
}

XAML:

<Page
x:Class="UWP_Test.TestPage"
...
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<TextBlock HorizontalAlignment="Center" 
VerticalAlignment="Center" 
Style="{StaticResource TitleTextBlockStyle}" 
Text="{x:Bind AbstractName}"/>
</Grid>
</Page>

然后我制作了两个派生页面,或者更确切地说是类:

public sealed class TestPage1 : TestPage
{
public override string AbstractName => "TestPage1";
}
public sealed class TestPage2 : TestPage
{
public override string AbstractName => "TestPage2";
}

问题

如果我现在尝试将Frame导航到TestPage1TestPage2,这将在DEBUG构建中工作,但在RELEASE生成中失败(System.AccessViolationException:"尝试读取或写入受保护的内存。">(。这与优化代码.net本机工具链是启用还是禁用无关。

对于我实际的UWP应用程序,我希望能够使用上述原理快速制作出在ItemTemplates、Viewmodels等几个方面不同的非常相似的页面。

如果有任何线索可以在发布版本中实现这一点,或者如何解决这一问题,我将不胜感激(在没有为每个派生页面创建单独的XAML文件的情况下,我已经在其他地方使用了它,并且正在发布中实现(。

显然,我希望它的工作方式在Release构建中似乎不受支持,这似乎是因为为Release或Debug构建编译.xaml和.cs文件的方式。

目前,我将使用多个.xaml文件,但我将继续尝试找到一种方法来实现这一点,并防止出现许多完全相同的.xaml代码(毕竟,使用同一代码的多个副本会在以后的某个地方出现问题(。

当我找到答案时,我会相应地更新这个答案。(感谢Hamed和Mikah迄今为止的帮助(

最新更新