此版本的 Microsoft.AspNetCore.All 只兼容 netcoreapp2.1 目标框架

Posted

技术标签:

【中文标题】此版本的 Microsoft.AspNetCore.All 只兼容 netcoreapp2.1 目标框架【英文标题】:This version of Microsoft.AspNetCore.All is only compatible with the netcoreapp2.1 target framework 【发布时间】:2018-11-16 18:39:13 【问题描述】:

当我从 2.0 升级到 .NET Core 2.1 后尝试将应用程序发布到 Web 服务器时,我收到以下消息:“此版本的 Microsoft.AspNetCore.All 仅与 netcoreapp2.1 目标框架兼容。请以 netcoreapp2.1 为目标或选择与 netcoreapp2.0 兼容的 Microsoft.AspNetCore.All 版本。”

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

这是我的项目文件:

<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>

我见过this,但这似乎不是问题。我也试用了 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]

【问题讨论】:

您是否安装了适用的 dotnet 2.1 sdk/runtime(即在服务器上)? 是的。对不起,我忽略了这一点。但是,我没有看到 Entity Framework 的 2.1 版本。 EF 是否包含在 dotnet 2.1 中? ...您确定您不会意外地在较旧的安装运行时下运行吗?鉴于您的 csproj 肯定是 2.1,在我看来,运行时是这里唯一的变量。 我添加了来自 dotnet --info 的结果。安装了多个版本。但是,我从来没有跑到任何地方。当我尝试发布到服务器时,Visual Studio 会给出上述消息。 根据docs.microsoft.com/en-us/aspnet/core/fundamentals/… 的建议,我删除了 AspNetCore.All 并将其替换为 AspNetCore.App。但是,我仍然收到 xame 消息。 【参考方案1】:

我猜您取消了所有 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>

所以我认为您缺少&lt;DotNetCliToolReferenceInclude=&gt; 项目组。

【讨论】:

感谢您的帮助。我确实是从 2.0 开始的。我不确定我是否理解。您是说(部分)我应该手动降级(通过手动编辑)然后使用 NuGet 升级吗?由于 2.0 中的问题,我正在尝试升级。 猜是 pub.xml 文件。如果你想让我记下这个答案,请告诉我。如果有人想要快速修复降级,我会离开它。【参考方案2】:

我遇到了同样的问题,但是我没有为正确的目标环境更新发布配置文件(.pubxml)

< TargetFramework>netcoreapp2.1< /TargetFramework>

关于前面的回答行

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

显示在 2.1 版本中由于过时而被删除,现在包含在其中

【讨论】:

更改 .pubxml 文件解决了这个问题。非常感谢! 删除 Microsoft.EntityFrameworkCore.Tools.DotNet 为我修复了它。谢谢! 你拯救了我的一天:D 你拯救了我的一天。更改它正在工作的 pub.xml 文件..非常感谢。【参考方案3】:

对我有帮助的只是删除 Properties > PublishProfiles 文件夹下的 .pubxml 文件,然后再次重新创建发布配置文件。

【讨论】:

【参考方案4】:

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

【讨论】:

非常混乱。它自动将其更新到正确版本的事实只会使它更加混乱。我想:“哦,但它已经设置正确了!”感谢您指出这一点! +1 谢谢。完美的。用 2.2 解决了同样的问题【参考方案5】:
    您可能需要先对项目进行清理。 在 Visual Studio 中右键单击项目文件。 单击属性选择应用程序 -> 目标框架 下拉并选择您要使用的 .Net Core Framework 版本。 重建您的解决方案。

【讨论】:

我还必须编辑我的发布配置,什么都不做,保存,然后发布工作。看起来发布配置文件有一个指向未自动更新的目标运行时的指针。【参考方案6】:

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

dotnet lambda 无服务器部署

原来我忘记更新我的 aws-lambda-tools-defaults.json 文件。

"framework"     : "netcoreapp2.1",

为处于相同情况的其他人添加。

【讨论】:

【参考方案7】:

我被这个问题困扰了大约 3 个小时。最终,当我添加了一个 Nuget 包Microsoft.VisualStudio.Web.CodeGeneration.Design 时,出现了这个错误。这就是我为解决这个问题所做的:

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

2) 将 dotnet 版本显式添加到 TargetFrameworkPackageReference2.1.0。您可以尝试添加最适合您的项目和 dotnet 版本的内容。

3) 我用dotnet restore 恢复了项目,然后用dotnet build 构建了

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

【讨论】:

【参考方案8】:

我尝试了我能找到的大多数建议,但最终解决问题的是从此处删除 Microsoft.AspNetCore.All 包:

%userprofile%.nuget\packages\microsoft.aspnetcore.all\2.1.5\build\netcoreapp2.1\

下一个版本恢复了正确的版本。

【讨论】:

我尝试了其他解决方案,但只有这个对我有用。【参考方案9】:

抱歉回复晚了,

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

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

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

【讨论】:

【参考方案10】:

我删除了项目中的 obj 文件夹,该文件夹中的 json 文件指向之前构建的 2.2 版本。

【讨论】:

以上是关于此版本的 Microsoft.AspNetCore.All 只兼容 netcoreapp2.1 目标框架的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Microsoft.NetCore.App 或 Microsoft.AspNetCore.App 的指定版本

Microsoft.AspNetCore.OData 8:按惯例找不到控制器

找不到包 Microsoft.AspNetCore.Identity.EntityFramework

尝试激活“AuthController”时无法解析“Microsoft.AspNetCore.Identity.UserManager”类型的服务

IFormFile 未从程序集“Microsoft.AspNetCore.Http 3.0”加载类型 Microsoft.AspNetCore.Http.Internal.FormFile'

Microsoft.AspNetCore.SpaServices.Extensions 的文档在哪里?