c# - UWP - .NET Native 工具链编译错误

标签 c# .net windows-10 uwp .net-native

我开发了一个使用 EF7 和 SQLite 的简单小型通用 Windows 应用程序。 It compiles and runs smoothly when the option "Compile with .NET Native tool chain" is unchecked.

如果我选中选项 “使用 .NET Native 工具链编译”,我会收到以下编译错误:

Error Type 'System.MarshalByRefObject' was not included in compilation, but was referenced in type 'Microsoft.Data.Entity.Design.OperationExecutor'. There may have been a missing assembly.

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

有人知道怎么解决吗?

最佳答案

我假设发生的情况是您使用的库未针对 UWP 可用的 .NET 表面区域。 UWP 的表面区域是一组称为 .NET Core 的 API,您可以在此处查看源代码:http://www.github.com/dotnet/corefx .您很可能需要更新版本的 EF...虽然我知道我们的提前编译策略存在一些其他问题(请参阅:https://github.com/aspnet/EntityFramework/issues/3603)。我们将继续与他们合作以解决问题,并希望 EF 在 3 月的某个时候更新 2 时能够处于一个很好的位置。

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

如果您实际上不需要这种类型(并且您需要的所有其他东西也不需要这种类型等等),那么从您的应用程序中删除该指令可能会允许 tree shaker 从您的应用程序中消除这种类型在事情出错之前:

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

此指令会导致您的应用程序中的所有类型和您引用的非框架库都被 Root ,因此无法摆脱。默认情况下使用此指令使我们的分析更容易,并且使大多数人不必对我们的分析引擎了解太多。删除它可能会帮助您避免此问题。

让我知道这是否有效,或者如果您有任何其他问题。我们总是乐于通过 dotnetnative@microsoft.com 获得反馈并提供一些支持。

关于c# - UWP - .NET Native 工具链编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34748389/

相关文章:

powershell - 如何在 Windows 10 中创建和安装 X.509 自签名证书而无需用户交互?

c# - ProximityDevice 未找到索尼 RC-S380 NFC 读写器

c# - When a certain item on dropdownlist1 is selected, select automatically a certain item on dropdownlist2

c# - 如何在不使用 `DisplayNameAttribute` 的情况下更改 ViewModel 显示名称?

c# - 串行端口连接处理程序

.net - 用于 Windows Server 事务/错误处理的服务总线 1.0

c# - 日期时间 DayOfWeek 比较

java - Windows 10 通知中的空白图标

c# - ActiveMQ NMS C# 对象消息使用什么序列化方法?

c# - 通过 CSOM 错误创建 SharePoint 查找字段