这个 Microsoft.AspNetCore.All 版本仅兼容 netcoreapp2.1 目标框架。

54

我尝试将我的应用程序从.NET Core 2.0升级到2.1后发布到Web服务器时,出现了以下提示信息:"This version of Microsoft.AspNetCore.All is only compatible with the netcoreapp2.1 target framework. Please target netcoreapp2.1 or choose a version of Microsoft.AspNetCore.All compatible with netcoreapp2.0."

在我的开发机上运行良好。

这是我的项目文件:

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RunPostBuildEvent>Always</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
</Project>

我看到了这个,但似乎不是问题的原因。我还尝试使用CodeGeneration.Tools的预览版2.1版本进行实验,但无法安装。

编辑:我在服务器上安装了dotnet 2.1。

以下是我在服务器上看到的内容:

D:\>dotnet --info
Host (useful for support):
  Version: 2.1.0
  Commit:  caa7b7e2ba

.NET Core SDKs installed:
  No SDKs were found.

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.5 [C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.6 [C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]

1
你是否在适当的位置(例如服务器上)安装了dotnet 2.1 sdk/runtime? - spender
是的。非常抱歉我忽略了那个问题。但是我没有看到 Entity Framework 的 2.1 版本。不过,EF 是否包含在 dotnet 2.1 中呢? - Jim S
你确定你没有意外地在旧的安装运行时下运行吗?考虑到你的csproj明确是2.1,我认为运行时是唯一的变量。 - spender
我已经添加了来自dotnet --info的结果。有多个版本被安装。然而,我从来没有运行任何东西。当我尝试发布到服务器时,Visual Studio会给出上面的消息。 - Jim S
根据 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/metapackage?view=aspnetcore-2.1 的建议,我删除了AspNetCore.All并替换为AspNetCore.App。然而,我仍然收到相同的消息。 - Jim S
10个回答

85

我曾经遇到过同样的问题,但后来发现没有更新正确目标环境的发布配置文件(.pubxml)

< TargetFramework>netcoreapp2.1< /TargetFramework>

关于之前的答案中提到的行

< DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />

由于过时并现在已经包含,应在2.1版本中删除展示。


2
更改 .pubxml 文件解决了问题。非常感谢! - Jim S
移除 Microsoft.EntityFrameworkCore.Tools.DotNet 解决了我的问题。谢谢! - howardlo

23

继 joakimja 的帖子之后,您还可以通过VS2017 IDE更新.pubxml文件。右键单击您的项目,选择“发布”,然后在“故障排除信息”行上单击“配置”,然后转到“设置”选项卡,在这里可以设置“目标框架”——实际上只要打开对话框,这个设置就应该自动更新为"netcoreapp2.1"。单击“保存”即可更新pubxml文件中的目标框架。然后尝试重新发布。


8
非常令人困惑。它自动更新到正确版本的事实只会让它变得更加令人困惑。我曾经想过:“哦,但它已经设置正确了!”感谢您指出这一点!+1 - Steven Jeuris
1
谢谢。完美。对于2.2版本的同一问题起作用。 - drewid

7
  1. 你可能需要首先对项目进行清理。
  2. 在Visual Studio中,右键单击项目文件。
  3. 单击 属性 选择 应用程序 -> 目标框架 下拉菜单,并选择您想要使用的 .Net Core Framework 版本。
  4. 重新构建您的解决方案。

1
我还必须编辑我的发布配置,不做任何操作,保存,然后才能进行发布。看起来发布配置文件具有指向目标运行时的指针,但该指针不会自动更新。 - kitsu.eb

5

删除“Properties”下的 “PublishProfiles” 文件夹中的 .pubxml 文件,然后重新创建发布配置文件可以帮助解决该问题。


4

enter image description here我遇到了这个问题大约3个小时。最后,在我添加了Nuget包Microsoft.VisualStudio.Web.CodeGeneration.Design之后,出现了这个错误。以下是我解决这个问题的步骤:

1) 删除我的.net core项目中的bin文件夹。

2) 明确地将dotnet版本添加到TargetFrameworkPackageReference中,并将版本号设置为2.1.0。您可以尝试添加最适合您的项目和dotnet版本的内容。

3) 使用dotnet restore还原项目,然后使用dotnet build构建项目。

4) 最后,我的问题得到了解决,我不再收到这个错误信息。


3

当我尝试使用以下命令将升级后的解决方案部署到AWS Lambda时,遇到了同样的问题(错误):

dotnet lambda deploy-serverless

事实证明,我忘记更新我的aws-lambda-tools-defaults.json文件。

"framework"     : "netcoreapp2.1",

为同样处于这种情况的其他人提供帮助。


2

我猜你已经下载了所有的2.1.x升级包,但最初在2.0.x版本上启动了项目。 我只需手动编辑cspoj文件,将其降级并添加以下内容:

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
    <TargetFramework>netcoreapp2</TargetFramework>

</PropertyGroup>


<ItemGroup>             
<PackageReference Include=
"Microsoft.AspNetCore.All" Version="2.0.3" />
<PackageReference Include=
"Microsoft.AspNetCore.Cors" Version="2.0.3" />                  
<PackageReference Include=
"Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.3" />                            
<PackageReference Include=
"Microsoft.EntityFrameworkCore.Tools" Version="2.0.3" PrivateAssets="All" />       
<PackageReference Include=
"Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.4" PrivateAssets="All" />
</ItemGroup>  


<ItemGroup>                      
<DotNetCliToolReferenceInclude=
    "Microsoft.EntityFrameworkCore.Tools.DotNet"Version="2.0.3" />   
<DotNetCliToolReferenceInclude=
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" /> 
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />       
</ItemGroup>

所以我认为您遗漏了<DotNetCliToolReferenceInclude=>项目组。

感谢您的帮助。我确实从2.0开始。我不确定我是否理解。您是在说(部分地),我应该手动降级(通过手动编辑),然后使用NuGet升级吗?我正在尝试升级,因为2.0存在问题。 - Jim S
猜测可能是pub.xml文件。如果您希望我删除此答案,请告诉我。如果有人想要快速降级,我会留下它。 - Mohamoud Mohamed

2
我尝试了大部分建议,但最终解决问题的方法是从以下位置删除Microsoft.AspNetCore.All包:
%userprofile%.nuget\packages\microsoft.aspnetcore.all\2.1.5\build\netcoreapp2.1\
下一次构建将恢复正确的版本。
"Original Answer"翻译成中文为"最初的回答"。

我尝试了其他的解决方案,但只有这一个对我起作用。 - paul cheung

2

抱歉回复晚了,

我现在遇到了这个错误并找到了解决方案。

我们需要在PublishProfiles中将TargetFramework版本更改为netcoreapp2.2

最初的回答:

<_SavePWD>True</_SavePWD>
<_DestinationType>AzureWebSite</_DestinationType>
<TargetFramework>netcoreapp2.2</TargetFramework>
<SelfContained>false</SelfContained>
<_IsPortable>true</_IsPortable>

1

我删除了项目中的obj文件夹,其中包含指向先前构建的2.2版本的json文件。


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