【问题标题】:The specified framework 'Microsoft.NETCore.App', version '2.1' was not found找不到指定的框架“Microsoft.NETCore.App”,版本“2.1”
【发布时间】:2019-04-20 22:24:57
【问题描述】:

我正在 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 包安装到项目中。即使你没有在那个项目中使用它
  • @TomasAschan:你是说 csproj 文件吗?我有多个,为应用程序指定多层。那么它会是EF所在的项目吗?
  • 查看Entity Framework Core tools reference - .NET CLI。您是否按照Installing the tools 的说明进行操作?如果将dotnet ef 命令运行到verify the installation,会得到什么?
  • 神圣 $h1t,谢谢伊万。再次阅读安装工具,我运行“dotnet add package Microsoft.EntityFrameworkCore.Design”,它似乎已经解决了问题。它在我的项目文件中添加了“”。与往常一样,Microsoft 的错误非常模糊,通常根本没有指出真正的问题......

标签: c# ef-core-2.1 .net-core-2.1


【解决方案1】:

请同时查看您的BundlerMinifier:

   <ItemGroup>
       <DotNetCliToolReference Include="BundlerMinifier.Core" Version="3.2.449" />
   </ItemGroup>

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

【讨论】:

    【解决方案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
    

    安装后,问题就在我这边解决了。

    【讨论】:

      【解决方案3】:

      为了解决这个问题,我必须安装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.EntityFrameworkCore.Design 包包含在 Microsoft.AspNetCore.App metapackage 中。

      我的解决方案分为不同的项目;我创建了一个 类库 项目,我的 EF Core 安装所在的位置。

      由于它不是一个 Asp.Net Core 项目(如前所述,它是一个类库),它还需要安装 Microsoft.EntityFrameworkCore.Design 包。

      安装包可以使用:dotnet add package Microsoft.EntityFrameworkCore.Design

      感谢 Ivan Stoev 为我指明了文档的方向。
      这个错误根本没有任何帮助,让我大吃一惊,试图找出潜在的问题。我希望这对其他人有用。

      【讨论】:

        猜你喜欢
        • 2020-03-01
        • 2020-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多