【问题标题】:.NET Core 6/EF Core 6.referencing Microsoft.Data.SqlClient, Version=2.0.20168.4.NET Core 6/EF Core 6.reference Microsoft.Data.SqlClient,版本=2.0.20168.4
【发布时间】:2025-12-25 19:50:10
【问题描述】:

我们使用 .NET Core 6 和 EF Core 6 创建了一个 Web API。在开发环境中一切正常,但是当我这样做时,发布应用程序失败并出现错误

System.IO.FileNotFoundException:无法加载文件或程序集 'Microsoft.Data.SqlClient, Version=2.0.20168.4, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5'

深入了解它引用 EF Core 操作的堆栈跟踪。

EF Core 依赖于 Microsoft.Data.SqlClient 版本 2.1.4,并且该版本存在于发布中。知道什么时候出错了吗?

非常感谢,三木

【问题讨论】:

  • 我最近在某个地方看到过这个问题。Github 可能。注意不要将产品版本与文件版本混为一谈。那 2.1.4 和 2.0.20168.4 不相关
  • 该版本存在于发布中 - 它实际上已发布到服务器吗?你有任何有效的绑定重定向吗?
  • 不,我没有主动绑定重定向。是的,已发布到服务器,但如果我在 IIS 上本地运行它,它就无法正常工作。
  • A 正在玩它,所以如果我使用 VS 应用程序作品发布。当我下载工件时,CI 服务器上的发布版本无法在测试服务器或我的机器上运行。我将检查这两个发布版本之间的区别。
  • 在 VS 发布的版本中,有一个运行时文件夹,但 CI 发布的版本中不存在。

标签: c# .net entity-framework ef-core-6.0


【解决方案1】:

感谢您的努力。

我发现了问题所在。

我的 dotnet publish 命令需要 --self-contained --runtime win-x64,因此它包含运行时,并且运行时不需要安装在目标机器上。

干杯,三木

【讨论】: