UWP与EF Core编译警告求助:含114条警告及NU1603异常
解决UWP+EF Core开发中的编译警告(含NU1603)
我来帮你梳理下这个问题的可能原因和解决思路,毕竟用VS2017做UWP+EF Core开发时,确实容易碰到这类依赖和兼容性警告——虽然数据表显示正常,但这些警告往往藏着潜在的版本冲突问题。
先聚焦核心:NU1603警告
NU1603本质是NuGet依赖版本冲突:某个直接/间接引用的包,依赖的版本和你项目中实际安装的版本不匹配,VS2017的NuGet解析引擎对这类冲突的提示会比较啰嗦,甚至引发连锁警告。你可以按以下步骤排查:
- 查看警告详情:打开VS的「输出」窗口,切换到「生成」输出类别,找到NU1603的具体描述,明确是哪个包(比如EF Core相关组件、UWP基础库)引发的冲突,以及涉及的版本号。
- 统一EF Core包版本:UWP对EF Core的版本兼容性要求严格,确保你项目中所有EF Core相关包(
Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools等)的版本完全一致。比如VS2017环境下,EF Core 2.1.x系列对UWP的支持最稳定,尽量避免使用3.x及以上版本(这类版本更适配VS2019+)。 - 清理并还原NuGet包:右键解决方案→「清理解决方案」,然后右键→「还原NuGet包」,清除本地缓存的旧包文件,强制重新拉取匹配版本的依赖。
- 手动约束依赖版本:如果是间接依赖的包引发冲突,可以在项目的
.csproj文件中,给对应的PackageReference添加版本约束,比如:<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.16" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.16" />
处理剩余的114条警告
大部分警告应该是NU1603引发的连锁提示,或者是UWP项目特有的兼容性警告,你可以按类型分类处理:
- 过时API警告:如果警告提示某个API已过时,先查看官方文档替换为推荐的新API;如果暂时不想修改代码,可以在项目属性→「生成」→「警告」中,添加对应的警告编号(比如
CS0618)到「禁止显示警告」列表。 - 包兼容性警告:部分第三方包对UWP的支持可能是预览版或有版本限制,若不影响功能可以暂时忽略;如果介意,可寻找功能类似且UWP兼容性更好的替代包。
- 项目版本配置问题:检查UWP项目的「目标版本」和「最低版本」是否一致,且符合EF Core的要求(EF Core 2.x要求UWP最低版本为10.0.16299),版本不匹配会触发大量兼容性警告。
VS2017专属建议
VS2017的NuGet和UWP工具链不如后续版本完善,建议你把VS2017更新到最新的补丁版本(比如15.9.x),很多旧版本的依赖解析bug会在补丁中修复,能减少不少莫名的警告。
内容的提问来源于stack exchange,提问作者JPKI
相关产品推荐
相关产品推荐

