如何将 ASP.NET Core 2.1(在 .NET Framework 上运行)更新到较新的版本?

问题描述 投票:0回答:1

我有一个旧应用程序在 ASP.NET Core 2.1 上运行并且在 .NET Framework 上运行(是的,这是一件事)。

好吧。但我需要更新旧项目以包含一些新更新 - 特别修补

UseCookiePolicy
支持 - 如https://devblogs.microsoft.com/dotnet/upcoming-samesite-cookie-changes-in-asp所述-net-and-asp-net-core/comment-page-3/ - 以及其他一些安全补丁)。

从 csproj 文件中提取:

    <TargetFramework>net48</TargetFramework>
    <AspNetCoreModuleName>AspNetCoreModuleV2</AspNetCoreModuleName>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.1.7" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Core" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="3.0.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.1" />
  </ItemGroup>

因此我们可以看到 ASP.NET Core 依赖项是通过 NuGet 引用的。

好的,很好 - 所以我需要去更新这些软件包。但问题来了 - 软件包不再存在https://www.nuget.org/packages/Microsoft.AspNetCore/2.1.7是最新版本,但可惜的是它是在我需要的修复之前发布的。 https://github.com/dotnet/announcements/issues/217 是他们表示将停止生成 NuGet 包的公告。

所以现在我有点卡住了。我可以从 https://github.com/dotnet/core/blob/main/release-notes/2.1/2.1.30/2.1.30.md#downloads 下载最新的 SDK 等 - 但如何更改我的项目从其 NuGet 引用改为 C:\Program Files\dotnet\shared 中的文件?

您可能会想建议使用 https://www.nuget.org/packages/Microsoft.AspNetCore.App/2.1.34#supportedframeworks-body-tab - 但这也不起作用,因为它明确排除了.NET 框架支持。

.NET Framework 上的 .NET Core 2.1 是受支持的。其他人如何解决这个升级问题?

c# asp.net-core-2.1 .net-4.8
1个回答
1
投票

根据这篇文章

对于软件包,在 2.1 世界中,我们仅发布直接受服务更改影响的软件包,我们不会推送所有软件包或所有间接引用受影响软件包的软件包。 这并不理想,因为这意味着您必须监视您传递依赖的包中的公告并提升它们,但还有其他原因使我们很难重新发布所有传递包。

含义:Microsoft.AspNetCore 顶级 NuGet 包将不再有更新。您必须自己检查所有依赖项(及其依赖项,等等...)并更新各个依赖项。

如果您的项目仍然使用packages.config文件,那么您应该能够在NuGet包管理器中看到所有可用的更新。

如果您的项目使用 PackageReferences,那么您应该能够使用

dotnet list package --include-transitive --outdated
(documentation) 命令查找所有具有可用更新的引用包。 要更新这些,您可以直接引用它们,或使用 Central Package Management with Transitive pinning

© www.soinside.com 2019 - 2024. All rights reserved.