【发布时间】: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