安装 .NET 6 后无法创建 EF 迁移

Posted

技术标签:

【中文标题】安装 .NET 6 后无法创建 EF 迁移【英文标题】:Can't create EF migrations after installing .NET 6 【发布时间】:2021-12-28 01:26:29 【问题描述】:

我刚刚安装了 .NET 6 SDK 并更新了我的所有项目以使用目标 net6.0,但是当我尝试使用 dotnet 工具创建新迁移时,我得到:

.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <ApplicationIcon>assets-logo.ico</ApplicationIcon>
    <RootNamespace>LC.Assets</RootNamespace>
    <Authors>Stein Lundbeck</Authors>
    <Company>Lundbeck Consulting</Company>
    <Product>LC Assets</Product>
    <Copyright>2021</Copyright>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="assets-logo.ico" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\LC.Components.Core\LC.Components.Core.csproj" />
    <ProjectReference Include="..\LC.Components\LC.Components.csproj" />
  </ItemGroup>

</Project>

找不到任何兼容的框架版本找不到框架“Microsoft.NETCore.App”,版本“2.0.0”(x64)。

找到以下框架: 6.0.0 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

您可以通过安装指定的框架和/或 SDK 来解决问题。

我已经将dotnet-ef 工具更新到 6.0.0 版本,所以我不知道它仍然针对 2.0.0 版本。

工具“dotnet-ef”已成功从版本“5.0.4”更新到版本“6.0.0”。

有什么想法吗?

【问题讨论】:

您是否更新了 EF 工具,但仍然迁移失败?你能发布你的 csproj 文件吗? @Chaodeng 我刚刚将它添加到问题中:) 您缺少开始 标记。这只是一个糟糕的复制/粘贴吗? @Chaodeng jepp 格式问题,现已修复 【参考方案1】:

我刚刚遇到了完全相同的问题。

我没有安装 Microsoft.NETCore.App 2.0.0,而是安装了 Entity Framework Core Design 包:

dotnet add package Microsoft.EntityFrameworkCore.Design

它让我的错误消失了。

注意:在我记得遵循 EF 入门指南 (https://docs.microsoft.com/en-us/ef/core/get-started/overview/first-app?tabs=netcore-cli) 让我安装了设计包并且在我遵循指南时没有抛出错误之后,我找到了解决方案。

【讨论】:

【参考方案2】:

我最近在升级到 .NET6 后遇到了这个问题。

我的解决方案是按照错误消息中的链接安装 Microsoft.NETCore.App 2.0.0。

https://dotnet.microsoft.com/download/dotnet/2.0/runtime

我猜测升级到 6 删除了这个框架,因为它被认为是遗留的......但是......仍然在 dot net 工具中使用(或以某种方式标记为必需的依赖项)。

【讨论】:

好的听起来不错。我正要安装运行时,但不知道它是否安装了 6.0。谢谢! 成功了!太棒了! 嗯,这不应该是必需的。您能否submit an issue附上您的项目(如果可能)以便我们进一步调查?【参考方案3】:

我的解决方案是按照 @Thomas Z 的建议安装 EntityFrameworkCore.Design。

dotnet add package Microsoft.EntityFrameworkCore.Design

同样,在创建 ef 迁移时确保 db 的路径是正确的。如果路径是动态创建的,它将不起作用。

【讨论】:

以上是关于安装 .NET 6 后无法创建 EF 迁移的主要内容,如果未能解决你的问题,请参考以下文章

无法在 .Net Standard 2.1 项目中添加 EF 6.4 迁移

.net framework(4.6.2) 迁移 .net core(2.2) 总结

ASP.NET 5 EF7 代码优先迁移默认按字母顺序创建列

从 EF Core 5 迁移到 EF Core 6 时出错

迁移到 .net core 3.1 后 EF OrderBy 出现问题

20.2.翻译系列:EF 6中基于代码的数据库迁移技术EF 6 Code-First系列