【问题标题】:Building ASPNetCore 6.0 project: Microsoft packages not compatible with .NETFramework,Version=v6.0, but support .NETCoreApp,Version=v6.0 instead构建 ASPNetCore 6.0 项目:Microsoft 包与 .NETFramework,Version=v6.0 不兼容,但支持 .NETCoreApp,Version=v6.0
【发布时间】:2022-03-14 18:52:40
【问题描述】:

我使用 Visual Studio 2022 (17.0.4) 构建了一个 ASPNetCore 6.0 网站,在我的开发机器上一切正常。

我现在正尝试通过 Jenkins 构建服务器来部署它。我首先通过https://dotnet.microsoft.com/en-us/download/dotnet/6.0 安装了 .Net 6.0.2 SDK 和 ASP.NET Core Runtime 6.0.2 托管包。在 Hosting Bundle 之后按要求重新启动。

我现在正在运行命令 dotnet publish /p:Configuration=Release .\path\to\my.csproj /p:PublishProfile=FolderProfile,但遇到了一堆错误,例如:

error NU1202: Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 6.0.2 supports: net6.0 .NETCoreApp,Version=v6.0)

error NU1202: Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0)

Microsoft.EntityFrameworkCore.Design 6.0.2、Microsoft.EntityFrameworkCore.Proxies 6.0.2、Microsoft.EntityFrameworkCore.Relational 6.0.2、Microsoft.EntityFrameworkCore.SqlServer 6.0.2、Microsoft.EntityFrameworkCore 包也有同样的错误。工具 6.0.2

我不明白为什么它告诉我它似乎已经下载了支持 .NETCoreApp,Version=v6.0 的包,但想要与 .NETFramework,Version=v6.0 兼容的包。我认为 .NET 6.0 的重点在于 Core 和 Framework 之间不再有任何区别,都是一样的吗?

为确保我运行的是正确版本的工具(在https://stackoverflow.com/a/70251470/206852 上查看答案),dotnet --version 给出了6.0.200。当运行dotnet publish 时,它说的第一件事就是Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET

解决方案中的所有项目都是 SDK 样式(在 .csproj 文件中它们包含 <Project Sdk="Microsoft.NET.Sdk.Web"><Project Sdk="Microsoft.NET.Sdk">,并且所有目标都是 net6.0 <TargetFramework>net6.0</TargetFramework>

关于如何解决此问题的任何想法?

编辑:我注意到一些包给出了稍微不同的错误,这是整个错误列表(我已经删除了最初包含在每行开头的项目路径):

error NU1202: Package Microsoft.AspNetCore.Mvc.NewtonsoftJson 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.AspNetCore.Mvc.NewtonsoftJson 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Design 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.EntityFrameworkCore.Design 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Proxies 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0).Package Microsoft.EntityFrameworkCore.Proxies 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Relational 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.EntityFrameworkCore.Relational 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.SqlServer 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.EntityFrameworkCore.SqlServer 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Tools 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.EntityFrameworkCore.Tools 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.AspNetCore.Mvc.NewtonsoftJson 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.AspNetCore.Mvc.NewtonsoftJson 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Design 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.EntityFrameworkCore.Design 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Proxies 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.EntityFrameworkCore.Proxies 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Relational 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.EntityFrameworkCore.Relational 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.SqlServer 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.EntityFrameworkCore.SqlServer 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.EntityFrameworkCore.Tools 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.EntityFrameworkCore.Tools 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0) error NU1202: Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.2 is not compatible with net60 (.NETFramework,Version=v6.0) / win7-x86. Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.2 supports: net6.0 (.NETCoreApp,Version=v6.0)

在此列表后半部分的错误中,引用了“win7-x86”。我不知道为什么,这是一个在 64 位操作系统上运行的 Windows Server 2012 服务器,我已经安装了 64 位版本的 SDK(在程序和功能中进行了验证)。

【问题讨论】:

  • *.csproj 文件中的目标框架是什么? *.csproj 文件中提到的版本和安装的 .net 核心运行时间的差异可能导致上述错误。我建议尝试安装相同版本的 .net 核心运行时并尝试发布该站点。看看它是否有助于解决问题。
  • @Deepak-MSFT 解决方案中所有项目的目标框架为 net6.0。你是说安装 6.0.0 SDK 而不是 6.0.2?
  • 是的,出于测试目的,您可以尝试安装 .NetCore 运行时 6.0 或保持 *.csproj 文件和 .NetCore 运行时的相同版本。
  • @Deepak-MSFT 我卸载了 6.0.2 SDK 以及程序和功能中与 .Net6 相关的所有内容,然后我安装了 .Net 6.0.100 SDK(6.0.0 不可用),我验证了dotnet --version 的版本返回 6.0.100,然后我再次尝试 dotnet publish,与以前相同的错误...

标签: c# asp.net-core jenkins build .net-6.0


【解决方案1】:

好吧,经过一番头疼后,我终于解决了这个问题。我做了很多事情,所以我不确定哪些是真正必要的,哪些不是,但我会在这里详细说明步骤。

首先,我在服务器上安装了 3 个 .NET core SDK,包括 6.0.200。我卸载了所有这些并重新启动。然后我再次安装了 6.0.200 并重新启动。

此时我尝试再次重建并得到一个不同的错误:MSB4236: The SDK 'Microsoft.NET.Sdk.Web' specified could not be found - 这很奇怪,因为 SDK 确实已安装并且安装在正确的位置等。

这导致我找到https://github.com/dotnet/sdk/issues/10229https://github.com/dotnet/msbuild/issues/2532,这导致我创建了一个指向C:\Program Files\dotnet\sdk\6.0.200\Sdks 的新环境变量MSBuildSDKsPath,它需要再次重新启动才能让詹金斯选择它,但在那之后,构建开始工作:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2020-02-25
    • 2018-06-07
    • 2018-06-20
    • 2018-10-21
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多