CSharpMigrationsGenerator 和 SqlServerMigrationsSqlGenerator 发生了什么
What happened to CSharpMigrationsGenerator and SqlServerMigrationsSqlGenerator
将现有项目从 EF Core 5 升级到 EF Core 6 后,一些自定义将不再编译,特别是对 CSharpMigrationsGenerator 和 SqlServerMigrationsSqlGenerator 的自定义 类。尽管名称空间是正确的,但 Visual Studio 强调了对它们的引用,并且似乎不知道我在说什么。查看 EF Core 源代码,类 是它们应该在的位置,为什么我的项目中看不到它们?
这是 NuGet 更新包引用的副作用。 Microsoft.EntityFrameworkCore.Migrations.Design 命名空间来自 Microsoft.EntityFrameworkCore.Design 包,它想像分析器一样安装自己。
更新参考后,您的 csproj 文件将如下所示:
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
这是不正确的。这就是您引用分析器的方式。它使该包中的代码可用于 Visual Studio,但不可用于您的代码。您想要的是像这样的普通旧包参考:
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0" />
修复您的 csproj 文件将使 类 再次可用于您的代码。
将现有项目从 EF Core 5 升级到 EF Core 6 后,一些自定义将不再编译,特别是对 CSharpMigrationsGenerator 和 SqlServerMigrationsSqlGenerator 的自定义 类。尽管名称空间是正确的,但 Visual Studio 强调了对它们的引用,并且似乎不知道我在说什么。查看 EF Core 源代码,类 是它们应该在的位置,为什么我的项目中看不到它们?
这是 NuGet 更新包引用的副作用。 Microsoft.EntityFrameworkCore.Migrations.Design 命名空间来自 Microsoft.EntityFrameworkCore.Design 包,它想像分析器一样安装自己。
更新参考后,您的 csproj 文件将如下所示:
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
这是不正确的。这就是您引用分析器的方式。它使该包中的代码可用于 Visual Studio,但不可用于您的代码。您想要的是像这样的普通旧包参考:
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0" />
修复您的 csproj 文件将使 类 再次可用于您的代码。