uwp app有动态变量,导致应用程序在发布模式下崩溃

时间:2018-03-06 13:29:23

标签: c# serialization dynamic uwp system.reflection

在我的uwp应用程序中我在许多地方使用动态变量,因为数据来自服务器后端api,所以我们希望保持动态。它在调试模式下运行良好,但我想上传到商店,所以我在发布模式下尝试了它并且它失败并出现以下异常

system.reflection.missingmetadataexception

很明显,在我试图使用动态数据的第一行的一个名为“LoginPage.xaml.cs”的页面中发生了这种异常。以下是导致异常的行。

ViewModel.backgroundURL = AppConfig.Login.background;
  

这里的AppConfig是常量类中的静态对象。它的类型是动态的,我成功地从服务器API获取它,但只有当我尝试在我的应用程序中使用它时才会出现异常,如上面的代码行所示。

经过一些研究后我发现在 Default.rd.xml 中使用以下行可以解决这个错误,我在那里放了以下一行。

<Namespace Name="bluebook.ViewModels" Seralize="All" />

如您所见,我将此行放在我的指令标记中,如下所示。

<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
    <Application>
       <!--
         An Assembly element with Name="*Application*" applies to all assemblies in
           the application package. The asterisks are not wildcards.
            -->
        <Assembly Name="*Application*" Dynamic="Required All" />

        <!-- Add your application specific runtime directives here. -->
        <Namespace Name="bluebook.ViewModels" Serialize="All" />

    </Application>
</Directives>
  

我正在尝试在ViewModel上执行指令,因为我指定的字段位于ViewModel类中。我还尝试在视图名称空间上执行此操作,该名称空间包含所有视图类,如 LoginPage 等,但在这两种情况下,异常仍然存在,完全在同一行

更新1

例外详细信息

  

System.Reflection.MissingMetadataException:'Reflection_InsufficientMetadata_NoHelpAvailable:EETypeRva:0x000a8990。

     

StackTrace:null

     

来源:null

2 个答案:

答案 0 :(得分:0)

&#34;序列化&#34;你的指令文件拼错了吗?

答案 1 :(得分:0)

尝试将<Type Name="Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder" Dynamic="Required All"/>添加到Default.rd.xml。

(这个答案可能与您有关 - 由在.Net Native工作的人回答 - Building with .NET Native tool chain causes error with missing property in dynamic object