在我的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
答案 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)