Project X 的目标框架是“.NETStandard”。实体框架包管理器控制台工具不支持此框架

DLe*_*Leh 6 c# entity-framework entity-framework-6

我尝试在包含 net472 项目和 netstandard 项目的解决方案中创建 EF 6.4 迁移,但出现以下错误:

项目“ESP.Console”针对框架“.NETStandard”。实体框架包管理器控制台工具不支持此框架。

但是,“ESP.Console”应用程序不针对 .NETStandard,而是针对 net472:

  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
    <LangVersion>7.3</LangVersion>
    <OutputType>Exe</OutputType>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我已将ESP.Console控制台应用程序设置为启动项目,并将该ESP.Data项目作为包管理器控制台中的默认项目。

这是以下设置ESP.Data.csproj

  <PropertyGroup>
    <TargetFrameworks>netstandard2.1;net472</TargetFrameworks>
    <EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

当我正在将解决方案中的其他应用程序转换为在 .net core 上运行时,我需要它同时针对 netstandard 和 net472。

为什么我会收到此错误?是否有另一个像dotnet ef我可以使用的命令适用于我的 EF 6.4 项目?

我们已在此解决方案上使用 EF 迁移数百次,但自从上次需要运行迁移以来,我们对解决方案进行了两项重大更改 - 将所有 csproj 文件转换为使用新格式(使用 PackageReference 等) )并根据需要将核心项目转换为目标 .net 标准 2.0 或 2.1。所以我认为这个问题与此有关。

尝试更改 ESP.Console 应用程序的运行方式会netcoreapp3.1出现相同的错误。

DLe*_*Leh 1

我已经找到了解决我的问题的方法,尽管它有点混乱,因为我需要对 csproj 文件进行临时更改才能使其运行。

就我而言,ESP.Data(我的项目DbContext)的目标是net472netstandard2.1,我更改了数据项目以删除netstandard2.1目标框架。VS 中似乎有一个错误,它表示 StartupProject 的目标是 NetStandard,而不是说 Target 项目的目标是 NetStandard。创建迁移后,我可以再次添加目标。

我很快就会转向 .net core 编译,因此在某个时候需要 netstandard 2.1 目标,所以我不确定当它到来时我会做什么。我可能需要保留 net472 控制台应用程序以供将来使用,并在迁移完成后继续在我的数据项目中定位 net472,以便继续创建迁移。