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

Jim*_*m S 49 c# razor-pages .net-core-2.1

当我从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>
Run Code Online (Sandbox Code Playgroud)

我已经看过,但似乎没有问题.我还尝试了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]
Run Code Online (Sandbox Code Playgroud)

joa*_*mja 75

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

< TargetFramework>netcoreapp2.1< /TargetFramework>
Run Code Online (Sandbox Code Playgroud)

并且关于早先回答这一行

< DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
Run Code Online (Sandbox Code Playgroud)

显示在2.1版本中删除已过时,现在包括在内

  • 更改.pubxml文件修复了问题.非常感谢! (2认同)

Mat*_*att 22

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

  • 很混乱.它自动将其更新为正确版本的事实只会让它更加混乱.我想:"哦,但它已经正确设置了!" 谢谢你指出这个!+1 (8认同)

All*_*non 6

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


Rob*_*och 5

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


小智 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>
Run Code Online (Sandbox Code Playgroud)

所以我认为您缺少该 <DotNetCliToolReferenceInclude=>项目组。