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

Posted

技术标签:

【中文标题】Project X 以框架“.NETStandard”为目标。实体框架包管理器控制台工具不支持此框架【英文标题】:Project X targets framework '.NETStandard'. The Entity Framework Package Manager Console Tools don't support this framework 【发布时间】:2020-10-23 10:01:46 【问题描述】:

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

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

但是,“ESP.Console”应用不针对 .NETStandard,它针对的是 net472:

  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
    <LangVersion>7.3</LangVersion>
    <OutputType>Exe</OutputType>
  </PropertyGroup>

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

这是ESP.Data.csproj的设置:

  <PropertyGroup>
    <TargetFrameworks>netstandard2.1;net472</TargetFrameworks>
    <EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
  </PropertyGroup>

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

为什么会出现此错误?是否有另一个命令,如 dotnet ef 可以用于我的 EF 6.4 项目?

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

尝试将 ESP.Console 应用程序更改为以 netcoreapp3.1 运行时出现了同样的错误。

【问题讨论】:

我认为“dotnet ef”仅适用于核心。在 VS 中尝试“Add-Migration InitialCreate -Namespace Your.Namespace”docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/… @Greg 这就是我的想法。在 VS 中,我运行了这个命令:add-migration OrderEventMigration -Namespace ESP.Data.Migrations 但这给了我错误:Add-Migration:找不到与参数名称“命名空间”匹配的参数。 应该像添加迁移测试一样简单。看看entityframeworktutorial.net/code-first/…。我假设您已经完成了启用迁移? 是的,我们之前已经多次使用此项目进行迁移,并且添加迁移通常有效。在过去的几个月里,我们迁移了我们的解决方案以使用新的 csproj 格式,并将核心库转换为使用 .net 标准,而不仅仅是 net472。我有一段时间没有进行迁移了,今天尝试迁移时收到此错误消息 看看***.com/questions/48673987/… - 也许问题是net 472没有可执行文件? 【参考方案1】:

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

就我而言,ESP.Data(包含我的DbContext 的项目)同时针对net472netstandard2.1,我更改了Data 项目以删除netstandard2.1 目标框架。似乎 VS 中有一个错误,它说 StartupProject 以 NetStandard 为目标,而不是说 Target 项目确实如此。创建迁移后,我可以再次添加目标。

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

【讨论】:

【参考方案2】:

我遇到了一个类似的问题。 我的问题是,我的启动项目以netcoreapp3.1 为目标并使用了Entity Framework 6 tools。 当我切换到EntityFrameworkCore tools 时,它起作用了。

【讨论】:

以上是关于Project X 以框架“.NETStandard”为目标。实体框架包管理器控制台工具不支持此框架的主要内容,如果未能解决你的问题,请参考以下文章

RestSharp的简单用法

nodejs入门篇---创建project并具体解释

实体框架 4.3 迁移错误

操作系统课程设计pintos project1实验摘记

学习使用Robot Framework自动化测试框架——简单测试例子

bufferknife框架的正确使用方式 -终于他么知道了