.NET Standard 2项目中Entity Framework Core类型未找到错误求助
我之前在Service Fabric里部署.NET Standard 2项目时也碰到过几乎一模一样的问题!折腾了好一阵子才搞定,给你分享几个我试过有效的排查方向和解决办法:
检查NuGet包的复制本地设置与依赖完整性
右键项目里的Microsoft.EntityFrameworkCore.SqlServer包,查看属性,确保「复制本地」选项是True。Service Fabric项目有时候不会自动把跨项目依赖的DLL复制到输出目录,这是常见坑点。另外,虽然SqlServer包会依赖基础的Microsoft.EntityFrameworkCore包,但偶尔NuGet的依赖解析会出问题,建议手动安装和SqlServer包版本一致的Microsoft.EntityFrameworkCore包,确保依赖链完整。调整Service Fabric的打包配置
打开Service Fabric的ApplicationManifest.xml,检查服务节点的CodePackage配置是否包含了所有需要的DLL。如果依赖没有自动打包,你可以在.NET Standard项目的.csproj文件里添加以下配置,强制让NuGet复制所有运行时依赖:<ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="你的版本号"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup>另外,一定要清理整个解决方案的
bin和obj文件夹,再重新生成并打包Service Fabric应用——旧缓存文件经常会导致这种莫名其妙的找不到DLL问题。确认项目引用与运行时兼容性
确保你的Service Fabric服务项目(无状态/有状态服务)是通过项目引用而非DLL引用关联你的.NET Standard类库的,项目引用才能保证依赖被正确传递。同时要注意Service Fabric集群(包括本地开发集群)的运行时版本是否支持你的EF Core版本和.NET Standard 2.0,部分旧版集群可能需要升级运行时才能兼容。查看详细构建日志定位问题
开启Visual Studio的详细构建日志:依次点击「工具」->「选项」->「项目和解决方案」->「构建并运行」,把MSBuild项目构建输出详细程度设为「详细」。重新构建后,从日志里找关于Microsoft.EntityFrameworkCore找不到的具体细节,比如是不是某个依赖缺失、复制DLL时被跳过,或者有冲突的版本存在。
内容的提问来源于stack exchange,提问作者Paul

