.NET Core 3.1 并且无法加载文件或程序集 System.Data.Entity,版本 = 4.0.0.0

Posted

技术标签:

【中文标题】.NET Core 3.1 并且无法加载文件或程序集 System.Data.Entity,版本 = 4.0.0.0【英文标题】:.NET Core 3.1 and Could not load file or assembly System.Data.Entity, Version=4.0.0.0 【发布时间】:2020-04-25 04:56:01 【问题描述】:

System.Data.Entity 在什么 Nuget 包中?

我正在将 .NET Framework 4.5 应用程序转换为 .NET Core 3.1。在 .NET Framework 中,它使用System.Linq.Dynamic,运行此代码时应用程序崩溃:

var results = report.GroupBy(filter.ID, "it")
                    .Select($"new (it.Key as MainID, it as MyModel)");

带有此错误消息:

System.IO.FileNotFoundException:无法加载文件或程序集“System.Data.Entity,版本=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”。该系统找不到指定的文件。 文件名:'System.Data.Entity,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089' 在 System.Linq.Dynamic.ExpressionParser..cctor()

注意:它确实编译正确

谢谢

编辑:System.Linq.Dynamic Nuget 包已安装。

【问题讨论】:

你可以看看 this 包和这个 GitHub repo 我不确定它们是否相同,但它应该对你有所帮助 @PavelAnikhouski 这样做了,必须添加 .AsQueryable() 但它工作得很好!如果您将此添加为答案,我会给您信用 【参考方案1】:

似乎System.Data.EntitySystem.Linq.Dynamic 程序集属于.NET Framework。对于 .NET Core,您可以尝试使用 System.Linq.Dynamic.Core 包,它与 .NET Standard 兼容。它的 GitHub repo 说,它是 .NET 4.0 动态语言功能的程序集的 .NET 核心端口。

【讨论】:

【参考方案2】:

我想向@PavelAnikhouski 添加一点,需要对代码进行非常小的更改。您必须将AsQueryable() 添加到集合中。

var results = report.AsQueryable()
                .GroupBy(filter.ID, "it")
                .Select($"new (it.Key as MainID, it as MyModel)");

【讨论】:

以上是关于.NET Core 3.1 并且无法加载文件或程序集 System.Data.Entity,版本 = 4.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 错误 500.32 - 将自包含 .Net Core 3.1 应用程序部署到 Azure 后,ANCM 无法加载 dll

从 .Net Core 运行 Powershell - 无法加载文件或程序集 Microsoft.Management.Infrastructure

AWS Lambda、.Net Core 和 MySql:无法加载文件或程序集 'System.Diagnostics.TraceSource,版本 = 4.0.0.0

使用.net core 3.1在linux中读取wav文件

部署到 Ubuntu 18.04 的 ASP.NET Core 3.0 应用程序抛出无法加载文件或程序集 System.Diagnostics.TraceSource

从 .net core 2.2 移动到 3.1 后无法上传文件