为什么add-migration命令在使用.NET的Visual Studio中成功构建时出现错误

Why add-migration command is giving error although build succeeds in Visual Studio using .NET

提问人:TTR 提问时间:4/19/2023 最后编辑:TTR 更新时间:4/20/2023 访问量:165

问:

我是 .NET 的新手,在 Visual Studio 2022 中执行命令时不断收到以下错误。错误详细信息add-migration

You must install or update .NET to run this application.

App: C:\Users\myname\.nuget\packages\microsoft.entityframeworkcore.tools\3.1.1\tools\netcoreapp2.0\any\ef.dll
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '2.0.0' (x64)
.NET location: C:\Program Files\dotnet\

The following frameworks were found:
  3.1.32 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  5.0.17 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  6.0.16 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  7.0.5 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Learn about framework resolution:
https://aka.ms/dotnet/app-launch-failed

To install missing framework, download:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=2.0.0&arch=x64&rid=win10-x64

注意,它不指向我的解决方案/项目的位置,
而是指向一些 nuget 包。
App: C:\Users\myName\.nuget\packages\microsoft.entityframeworkcore.tools\3.1.1\tools\netcoreapp2.0\any\ef.dll

.csproj文件提及 。因此,我假设我的应用程序使用的是已安装在我的系统中的 .NET。但是错误说我应该有 .NET<TargetFrameworks>netcoreapp3.1</TargetFrameworks>3.12.0.0

我尝试在包管理器控制台中检查.NET版本。
PM> dotnet --version
7.0.203

我非常感谢任何修复或帮助,以了解为什么它要求我的应用程序何时使用,以及为什么当我尝试在 PM 控制台中检查版本时显示它。2.0.03.17.0

C# visual-studio net-core net-2.0

评论

0赞 jdweng 4/19/2023
检查目标。目标设置为 Core 7.0,这是最新的。我不确定迁移是否适用于旧版本的 Net Core。确保执行干净的构建以删除中间 obj 文件,并重新构建整个项目。Net 3.1 的原因是,如果您的 obj 未编译或目标设置为 Net 3.1。
0赞 wenbingeng-MSFT 4/20/2023
您可以在项目属性中查看项目的目标框架是什么?如果它与 entityframeworkcore 兼容版本不匹配,请更新 entityframeworkcore 或更改目标框架

答:

0赞 Giorgi Anakidze 4/20/2023 #1
PM> dotnet --version
7.0.203

此命令表示的是系统上安装的最新版本的 .NET,而不是项目使用的版本。

<TargetFrameworks>netcoreapp3.1</TargetFrameworks>

虽然这已经表明你的应用正在使用 .NET Core 3.1,但如果你想使用 .NET 7,则应将其换成

<TargetFramework>net7.0</TargetFramework>

之后,我会将 nuget 包更新到相应的版本,然后重试。