指定的框架'Microsoft.NETCore.App',版本'2.1'未找到。

18
我正在开发一个使用dotNet Core 2.1的Angular 6应用程序。一切正常运行,直到我开始设置EFCore。我的所有模型都已定义并创建了上下文。运行dotnet ef migrations add InitialCreate时,我遇到了“未找到指定框架'Microsoft.NETCore.App',版本为'2.1'”的错误。
我已经搜索并阅读了所有我能找到的具有此错误的各个版本的dotNet Core的文章。没有什么解决这个问题。
我安装了各种版本的dotNet Core App。查看“C:\Program Files\dotnet\shared\Microsoft.NETCore.App”,我有以下内容:
-1.0.4
-1.0.5
-1.1.1
-1.1.2
-2.0.0
-2.0.3
-2.0.5
-2.0.6
-2.0.7
-2.0.9
-2.1.0
-2.1.4
-2.1.5
-2.1.6
“C:\Program Files\dotnet”出现在我的系统PATH变量的第一个路径中。
将解决方案中的所有项目降级为dotNet Core 2.0后,运行该命令会产生完全相同的错误,引用版本2.0。
任何建议都将不胜感激...
我EF项目的csproj文件如下:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

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

  <ItemGroup>
    <ProjectReference Include="..\*********.Contracts\*********.Contracts.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="System">
      <HintPath>System</HintPath>
    </Reference>
    <Reference Include="System.Data">
      <HintPath>System.Data</HintPath>
    </Reference>
    <Reference Include="System.Xml">
      <HintPath>System.Xml</HintPath>
    </Reference>
  </ItemGroup>
</Project>

尝试将此Nuget包安装到项目中。即使您在该项目中不使用它。 - OlegI
@TomasAschan:你是指csproj文件吗?我有多个,用于指定应用程序的多层。那么EF所在的项目是哪个呢? - WJK
1
请查看Entity Framework Core工具参考- .NET CLI。您是否遵循了安装工具的说明?如果运行dotnet ef命令以验证安装,会得到什么结果? - Ivan Stoev
@IvanStoev:运行"dotnet restore"然后运行"dotnet ef",会显示:"Entity Framework Core .NET Command-line tools 2.1.4-rtm-31024"。 - WJK
1
天啊,感谢Ivan。再次阅读安装工具时,我运行了“dotnet add package Microsoft.EntityFrameworkCore.Design”,它似乎解决了问题。它将“<PackageReference Include =”Microsoft.EntityFrameworkCore.Design“ Version =”2.1.4“ />”添加到我的项目文件中。像往常一样,微软的错误非常模糊,通常根本没有指向真正的问题... - WJK
显示剩余9条评论
3个回答

15
为解决这个问题,我不得不安装 Microsoft.EntityFrameworkCore.Design 包。文档中的 installing-the-tools 部分说明,在 Asp.Net Core 2.1+ 版本中无需这么做:

ASP.NET Core 2.1+

  • 安装当前的 .NET Core SDK。即使您拥有最新版本的 Visual Studio 2017,也必须安装 SDK。
    这是 ASP.NET Core 2.1+ 所需的全部内容,因为 Microsoft.AspNetCore.App metapackage 中已经包含了 Microsoft.EntityFrameworkCore.Design 包。
我的解决方案被分成了不同的项目;我创建了一个 Class Library 项目,其中包含了我的 EF Core 安装。
由于这不是 Asp.Net Core 项目(正如之前所述,它是一个 Class Library),因此还需要安装 Microsoft.EntityFrameworkCore.Design 包。
可以使用以下命令安装该包:dotnet add package Microsoft.EntityFrameworkCore.Design 感谢 Ivan Stoev 指引我查看文档。 错误一点帮助都没有,让我四处寻找潜在问题。我希望这对其他人有用。

2

当我运行时,遇到了同样的问题

dotnet ef dbcontext info -s ProjectWeb.csproj

尽管它正在寻找的版本是2.1.17:
The framework 'Microsoft.NETCore.App', version '2.1.17' was not found.

很幸运的是,在深入研究这个问题时,有一个建议在这里下载:

https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=2.1.17&arch=x64&rid=win10-x64

这将会重定向你到这个链接:

https://dotnet.microsoft.com/download/dotnet-core/2.1/runtime/?utm_source=getdotnetcore&utm_medium=referral

安装后,问题在我的这一端得到了解决。

0
请同时检查您的 BundlerMinifier:
   <ItemGroup>
       <DotNetCliToolReference Include="BundlerMinifier.Core" Version="3.2.449" />
   </ItemGroup>

如果您正在使用旧版本,那很可能是罪魁祸首...请查看最新版本: https://www.nuget.org/packages/BundlerMinifier.Core/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接