You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

UWP项目中使用Entity Framework与Sqlite时遇到的兼容性及程序集加载问题

解决UWP+Entity Framework Core+SQLite开发中的兼容性问题

我来一步步帮你拆解并解决遇到的这两个核心问题:

问题1:EF Core Sqlite 5.0.3与UAP 10.0.17763不兼容的原因

你看到的错误本质是框架版本不匹配:EF Core 5.x系列的目标框架是.NET Standard 2.1,但你当前使用的UWP版本(uap10.0.17763,对应Windows 10 1809)最高仅支持.NET Standard 2.0,并不兼容.NET Standard 2.1。

虽然EF Core本身基于.NET Core开发,但它的NuGet包会针对不同的.NET Standard版本发布,5.x系列放弃了对.NET Standard 2.0及以下版本的支持,所以和你的UWP项目环境冲突。

解决方案

选择与UWP uap10.0.17763兼容的EF Core版本,推荐使用EF Core 3.x系列(比如3.1.x),这个版本的目标框架是.NET Standard 2.0,完全适配你的UWP项目。执行以下命令安装:

Install-Package Microsoft.EntityFrameworkCore.Sqlite -Version 3.1.31
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.31

问题2:EF Core 1.0.0版本下System.Reflection.TypeExtensions找不到的问题

这个FileNotFoundException的核心是项目依赖的包没有被正确引用或复制到编译输出目录。虽然你本地存在该DLL,但EF Core Tools执行迁移时只会搜索指定的两个路径,而你的新项目(基于Microsoft.NETCore.UniversalPlatform 6.2.10)没有把这个依赖包纳入编译流程。

另外,你提到之前基于netstandard1.3+MSBuild的项目能正常运行,现在出问题的原因是:新版本的UWP SDK对依赖的处理逻辑有变化,老旧的EF Core 1.0.0和这个新SDK存在兼容性冲突。

解决方案

  1. 优先升级到兼容的EF Core版本:参考问题1的方案切换到EF Core 3.x,这个版本和较新的UWP SDK、Visual Studio 16.8兼容性更好,能从根源避免老版本的依赖缺失问题。
  2. 如果坚持使用EF Core 1.0.0
    • 手动安装对应版本的System.Reflection.TypeExtensions包到项目:
      Install-Package System.Reflection.TypeExtensions -Version 4.0.0
      
    • 清理并重建项目,确保依赖包被复制到bin/x86/Debug/目录;也可以检查项目的.csproj文件,确认该包的引用正确:
      <PackageReference Include="System.Reflection.TypeExtensions" Version="4.0.0" />
      

额外建议

尽量避免使用过于老旧的EF Core版本(比如1.0.0),这些版本不仅缺少大量实用特性,还会和新的UWP SDK、Visual Studio版本产生兼容性问题。升级到3.x版本既能解决当前的报错,也能获得更顺畅的开发体验。

内容的提问来源于stack exchange,提问作者AndreiM

火山引擎 最新活动