You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引用.NET Standard类库的WPF项目出现FileNotFoundException求助

解决.NET Framework WPF项目无法加载.NET Standard类库中EF Core依赖的问题

问题复现

你遇到的场景很典型:

  • 使用Visual Studio 2019 (16.3.3) 创建了两个项目:
    1. .NET Standard 2.0类库:引用Microsoft.EntityFrameworkCore 2.2.4,封装了自定义Repository类操作DbContext;
    2. .NET Framework 4.7.1 WPF项目:引用上述类库,调用Repository时抛出FileNotFoundException,提示找不到Microsoft.EntityFrameworkCore, Version=2.2.4.0,且WPF项目的bin\Debug目录下确实缺失该DLL。

额外背景:

  • 直接给WPF项目添加Microsoft.EntityFrameworkCore.SqlServer等.NET Core包会生成大量<Reference>节点,不符合需求;
  • 记得旧项目需迁移为PackageReference来传递间接依赖,但当前WPF项目没有packages.config,无法执行迁移操作。

核心原因

.NET Standard类库默认使用PackageReference管理NuGet依赖,而.NET Framework项目如果保留旧的packages.config格式,依赖无法自动传递;但你当前的WPF项目没有packages.config,说明它大概率已经默认使用PackageReference,问题出在依赖传递的配置或者项目引用的正确性上。

解决方案

1. 确认WPF项目的NuGet包管理格式

右键你的WPF项目 → 选择管理NuGet程序包 → 点击右上角的齿轮图标(设置) → 在包管理标签下,确认默认包管理格式是PackageReference。

  • 如果不是,选择PackageReference并应用,VS会自动转换项目的包管理方式(即使没有packages.config也能完成)。

2. 确保类库引用是项目引用而非DLL引用

右键WPF项目的引用节点 → 确认你添加的是项目引用(指向你的.NET Standard类库),而不是直接引用类库的输出DLL。

  • 如果是直接引用DLL,NuGet的依赖传递机制不会生效,导致EF Core的DLL不会被复制到WPF项目的输出目录。

3. 强制触发依赖传递与重新构建

  • 右键解决方案 → 选择清理解决方案;
  • 手动删除WPF项目bin和obj目录下的所有文件;
  • 右键解决方案 → 选择重新生成解决方案;
  • 完成后检查WPF项目的bin\Debug目录,确认Microsoft.EntityFrameworkCore.dll及相关依赖是否已被复制进来。

4. 手动添加最小化的EF Core依赖(备选方案)

如果上述方法仍无效,你可以在WPF项目中通过PackageReference添加Microsoft.EntityFrameworkCore 2.2.4包——这种方式不会生成大量<Reference>节点(因为是PackageReference格式),同时能确保依赖被正确引入。

补充说明

.NET Framework 4.7.1完全兼容.NET Standard 2.0,所以依赖传递的问题本质是NuGet包管理格式的配置问题,而非框架兼容性问题。你的旧解决方案能正常运行,大概率是因为旧项目已经正确配置了PackageReference格式。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:13:42