引用的项目依赖DLL未被复制问题求助
这问题我之前帮人排查过好几次,在.NET Framework项目引用.NET Standard类库并使用EF Core早期版本时特别常见,给你几个针对性的解决办法:
显式在主项目安装EF Core核心包
你的类库虽然已经安装了Microsoft.EntityFrameworkCore.Sqlite,但.NET Framework 4.7对.NET Standard 2.0的依赖传递有时候不够顺畅。直接在**MyProject(WPF主项目)**中安装同版本(2.0.3)的Microsoft.EntityFrameworkCoreNuGet包,这样Visual Studio会自动将相关依赖DLL复制到主项目的输出目录。添加程序集绑定重定向
.NET Framework项目经常遇到版本绑定冲突,打开主项目的App.config,在<runtime>标签内添加以下配置:<dependentAssembly> <assemblyIdentity name="Microsoft.EntityFrameworkCore" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.3.0" newVersion="2.0.3.0" /> </dependentAssembly>这能强制程序运行时加载指定版本的EF Core程序集,避免版本匹配问题。
手动验证并复制缺失的DLL
打开主项目Debug输出目录(右键项目→属性→生成→输出路径),检查是否存在Microsoft.EntityFrameworkCore.dll、Microsoft.EntityFrameworkCore.Relational.dll等核心依赖。如果有缺失,直接从MyProject.Relational\bin\Debug\netstandard2.0目录中复制对应的DLL到主项目输出目录,再测试运行。更新Visual Studio 2017到最新稳定版
VS2017早期版本对.NET Standard 2.0的依赖处理存在bug,建议将VS2017升级到15.9.x版本(这是VS2017的最终稳定版),很多依赖复制异常能通过IDE更新直接解决。再次确认“复制本地”设置
虽然你已经尝试过,但还是要仔细核对:- 在MyProject的引用列表中,选中MyProject.Core和MyProject.Relational,右键→属性,确保“复制本地”为
True; - 在MyProject.Relational的NuGet包管理器中,查看
Microsoft.EntityFrameworkCore.Sqlite及其依赖包的“复制本地”选项,确保均设为True。
- 在MyProject的引用列表中,选中MyProject.Core和MyProject.Relational,右键→属性,确保“复制本地”为
内容的提问来源于stack exchange,提问作者RA.

