C# UWP-.NET本机工具链编译错误

C# UWP-.NET本机工具链编译错误,c#,.net,windows-10,uwp,.net-native,C#,.net,Windows 10,Uwp,.net Native,我开发了一个使用EF7和SQLite的简单小型通用Windows应用程序。当“使用.NET本机工具链编译”选项未选中时,它将顺利编译并运行 如果选中“使用.NET本机工具链编译”选项,则会出现以下编译错误: 编译中未包含错误类型“System.MarshalByRefObject”,但在类型“Microsoft.Data.Entity.Design.OperationExecutor”中引用了该类型。可能缺少一个程序集 在这之后还有很多其他的错误,但我相信解决这个问题也会解决剩下的问题 有人知道

我开发了一个使用EF7和SQLite的简单小型通用Windows应用程序。当“使用.NET本机工具链编译”选项未选中时,它将顺利编译并运行

如果选中“使用.NET本机工具链编译”选项,则会出现以下编译错误:

编译中未包含错误类型“System.MarshalByRefObject”,但在类型“Microsoft.Data.Entity.Design.OperationExecutor”中引用了该类型。可能缺少一个程序集

在这之后还有很多其他的错误,但我相信解决这个问题也会解决剩下的问题


有人知道如何解决这个问题吗?

我想发生的是,您使用的库没有针对UWP可用的.NET表面积。UWP的表面积是一组名为.NET Core的API,您可以在此处看到源代码:。很可能您需要更新版本的EF。。。尽管我知道他们在我们的提前编译策略方面还有一些其他问题(请参阅)。我们将继续与他们合作解决问题,并希望EF将在3月的某个时候更新2

您只在.NET Native中看到这一点的原因是编译器在编译时遍历整个应用程序,以便为它认为您将要调用的所有内容生成本机代码。它碰巧注意到,此类型不可用,并且会正确地出错。我假设您实际上没有在应用程序中调用此代码路径,因为它会在CoreCLR上产生类似的错误。。。它只发生在运行时,而不是编译时

如果您实际上不需要此类型(以及您需要的所有其他内容也不需要此类型等),则从应用程序中删除此指令可能会允许树摇动器在出现问题之前从应用程序中删除此类型:

    <Assembly Name="*Application*" Dynamic="Required All" />

此指令导致应用程序中的所有类型和引用的非框架库都被根化,因此无法删除。默认情况下,使用此指令可以使我们的分析更加容易,并使大多数人不必太了解我们的分析引擎。删除此选项可能有助于避免此问题


让我知道这是否可行,或者如果你有任何其他问题。我们总是喜欢得到反馈,并随时提供支持dotnetnative@microsoft.com.

只需将该类型添加到Default.rd.xml,然后重试。我该怎么做?在哪里?来吧,伙计,我从.NET和C#开始。没有人天生就无所不知。既然你知道该怎么做,我相信告诉我也没问题。我已经在谷歌上输入了,发现这个文件在我的项目的属性文件夹中。问题是我不知道如何添加“System.MarshallByRefObject”引用。与此完全相同的问题我已删除,并且应用程序已正常编译(经过很长时间的等待),并选中了“使用.NET本机工具链编译”选项。现在的问题是,当我运行“appcertui.exe”时,应用程序卡在测试的中间。我想我会创建一个没有EF和SQlite的侧项目(可能会将数据保存在ini文件中),直到EF得到一个更稳定的版本。如果AppCertUI失败是一致的,我很高兴将其发送给MS的人。你可以使用上面的电子邮件直接联系我。