此版本的 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>
所以我认为您缺少<DotNetCliToolReferenceInclude=>
项目组。
【讨论】:
感谢您的帮助。我确实是从 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 版本显式添加到 TargetFramework 和 PackageReference 到 2.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'