La fundación .Net, basandose en los criterios de Innovación Continua, Retroalimentación de la comunidad, Adaptación a cambios en el panorama tecnológico, Competencia en el mercado y Mateninimiento y soporte. Libera cada año una nueva versión de esta cája de herramientas gigante para desarrolladores de software, llamada .Net.

Caja que contiene todas las piezas necesarias para construir diferentes tipos de programas y aplicaciones para ordenadores (personales y servidores) y dispositivos móviles (telefonos, tablets, consolas de juego, IoT), proporcionando las herramientas necesarias (básicas y avanzadas) para que el software funcione correctamente.

Me he puesto la meta que todos mis proyectos (personales y de terceros) deben ser actualizados para añadir estas mejoras en donde un componente de seguridad (corregir vulnerabilidades en las piezas de código), sea parte de la política de actualización.

Hace casí tres años cambié este blog, de haberlo iniciado en WordPress para pasarlo a .Net, basado en un código open source Dasblog-core.

No realicé un fork, descargue todo el código, y a partir de allí realicé mi Blog personalizado.

Hace dos años lo migré de a .Net 6.0, ajuste CI/CD, el repositorio sigue privado en GitHub, y las canalizaciones en Azure DevOps.

Este año, iba hacer lo mismo, cuando vi un interesante video de Scott Hanselman .NET Developers should be using dotnet-outdated to update their project's references mostrando como ha sido su actualización de tres de sus proyectos personales, de .Net 6.0 a .Net 8.0. Destacando el uso de las herramientas dotnet-outdated-tool y upgrade-assistant. Diez minutos y todo estaba actualizado de .Net 6.0 a .Net 8.0.

A mi me tomo mas tiempo, puesto que mis paquetes de libreria estaban mas desactualizados y al hacerlo, las referencias a sus propiedades y las llamadas a algunos de sus métodos, ya no estaban obsoleto, generando warnings, o en desuso, generando errores.

Pero los pasos fueron los siguientes.

1- Revisando la versión de paquetes nuget y actualizarlos a las versiones mas recientes.

dotnet tool update --global dotnet-outdated-tool

Para revisar los paquetes nugets, utilizamos la herrmienta dotnet-outdated-tool

Mayor información aqui:

GitHub - dotnet-outdated/dotnet-outdated: A .NET Core global tool to display and update outdated NuGet packages in a project

Revisando la salida del dotnet-outdated

 dotnet-outdated
» dasblog-core
 [net6.0]
 ConsoleTables                                           2.4.2 -> 2.6.1
 McMaster.Extensions.CommandLineUtils                   4.0.1 -> 4.1.1
 Microsoft.Extensions.Configuration                     6.0.1 -> 8.0.0
 Microsoft.Extensions.Configuration.Xml                 6.0.0 -> 8.0.0
 Microsoft.Extensions.DependencyInjection               6.0.0 -> 8.0.0
 Microsoft.Extensions.DependencyInjection.Abstractions  6.0.0 -> 8.0.1
 Microsoft.Extensions.Options                           6.0.0 -> 8.0.2
 Microsoft.SourceLink.GitHub                             1.1.1 -> 8.0.0

» DasBlog.Core
 [net6.0]
 Microsoft.Extensions.Options                 6.0.0 -> 8.0.2
 Microsoft.SourceLink.GitHub                   1.1.1 -> 8.0.0
 NetEscapades.Extensions.Logging.RollingFile   2.4.1 -> 2.5.0
 NodaTime                                     3.1.2 -> 3.1.11

» DasBlog.Managers
 [net6.0]
 Microsoft.SourceLink.GitHub  1.1.1 -> 8.0.0
 NodaTime                     3.1.2 -> 3.1.11

» DasBlog.Services
 [net6.0]
 Kveer.XmlRPC                  1.2.0 -> 1.2.1
 MailKit                       3.4.1 -> 4.4.0
 Microsoft.Extensions.Options  6.0.0 -> 8.0.2
 Microsoft.SourceLink.GitHub   1.1.1 -> 8.0.0
 Quartz.AspNetCore             3.5.0 -> 3.8.1

» DasBlog.Web
 [net6.0]
 AutoMapper                                             11.0.1 -> 13.0.1
 Microsoft.ApplicationInsights.AspNetCore               2.21.0 -> 2.22.0
 Microsoft.AspNetCore.Identity.EntityFrameworkCore       6.0.9  -> 6.0.28
 Microsoft.AspNetCore.Mvc.Razor.Extensions             6.0.9  -> 6.0.28
 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation      6.0.9  -> 6.0.28
 Microsoft.SourceLink.GitHub                             1.1.1  -> 8.0.0
 Microsoft.VisualStudio.Azure.Containers.Tools.Targets   1.11.1 ->
 Microsoft.VisualStudio.Web.CodeGeneration.Design       6.0.9  -> 6.0.16
 NetEscapades.Extensions.Logging.RollingFile           2.4.1  -> 2.5.0
 Quartz.AspNetCore                                       3.5.0  -> 3.8.1

» newtelligence.DasBlog.Runtime
 [net6.0]
 Microsoft.SourceLink.GitHub   1.1.1 -> 8.0.0
 NodaTime                     3.1.2 -> 3.1.11

Version color legend:
<red>   : Major version update or pre-release version. Possible breaking changes.
<yellow>: Minor version update. Backwards-compatible features added.
<green> : Patch version update. Backwards-compatible bug fixes.

You can upgrade packages to the latest version by passing the -u or -u:prompt option.
Elapsed: 00:00:03.2835635

Después de la actualización:

 dotnet outdated -utd
» dasblog-core
 [net8.0]
 ConsoleTables                                           2.6.1 == 2.6.1
 McMaster.Extensions.CommandLineUtils                   4.1.1 == 4.1.1
 Microsoft.Extensions.Configuration                     8.0.0 == 8.0.0
 Microsoft.Extensions.Configuration.Xml                 8.0.0 == 8.0.0
 Microsoft.Extensions.DependencyInjection               8.0.0 == 8.0.0
 Microsoft.Extensions.DependencyInjection.Abstractions  8.0.1 == 8.0.1
 Microsoft.Extensions.Options                           8.0.2 == 8.0.2
 Microsoft.SourceLink.GitHub                             8.0.0 == 8.0.0

» DasBlog.Core
 [net8.0]
 Microsoft.Extensions.Options                 8.0.2  == 8.0.2
 Microsoft.SourceLink.GitHub                   8.0.0  == 8.0.0
 NetEscapades.Extensions.Logging.RollingFile   2.5.0  == 2.5.0
 NodaTime                                     3.1.11 == 3.1.11

» DasBlog.Managers
 [net8.0]
 Microsoft.SourceLink.GitHub   8.0.0  == 8.0.0
 NodaTime                     3.1.11 == 3.1.11

» DasBlog.Services
 [net8.0]
 Kveer.XmlRPC                   1.2.1 == 1.2.1
 MailKit                       4.4.0 == 4.4.0
 Microsoft.Extensions.Options   8.0.2 == 8.0.2
 Microsoft.SourceLink.GitHub   8.0.0 == 8.0.0
 Quartz.AspNetCore             3.8.1 == 3.8.1

» DasBlog.Test.Integration
 [net8.0]
 coverlet.collector                 6.0.2  == 6.0.2
 Microsoft.AspNetCore.Mvc.Testing   8.0.3  == 8.0.3
 Microsoft.NET.Test.Sdk             17.9.0 == 17.9.0
 Selenium.Support                   4.18.1 == 4.18.1
 Selenium.WebDriver                 4.18.1 == 4.18.1
 xunit                             2.7.0  == 2.7.0
 xunit.runner.visualstudio         2.5.7  == 2.5.7
 Xunit.SkippableFact               1.4.13 == 1.4.13

» DasBlog.Tests.UnitTests
 [net8.0]
 Microsoft.Extensions.PlatformAbstractions   1.1.0   == 1.1.0
 Microsoft.NET.Test.Sdk                     17.9.0  == 17.9.0
 Moq                                         4.20.70 == 4.20.70
 xunit                                       2.7.0   == 2.7.0
 xunit.runner.visualstudio                   2.5.7   == 2.5.7

» DasBlog.Web
 [net8.0]
 AutoMapper                                         13.0.1 == 13.0.1
 Microsoft.ApplicationInsights.AspNetCore           2.22.0 == 2.22.0
 Microsoft.AspNetCore.Identity.EntityFrameworkCore   8.0.3  == 8.0.3
 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation  8.0.3  == 8.0.3
 Microsoft.SourceLink.GitHub                         8.0.0  == 8.0.0
 Microsoft.VisualStudio.Web.CodeGeneration.Design   8.0.2  == 8.0.2
 NetEscapades.Extensions.Logging.RollingFile         2.5.0  == 2.5.0
 NWebsec.AspNetCore.Middleware                       3.0.0  == 3.0.0
 Quartz.AspNetCore                                   3.8.1  == 3.8.1
 reCAPTCHA.AspNetCore                               3.0.10 == 3.0.10

» newtelligence.DasBlog.Runtime
 [net8.0]
 Microsoft.SourceLink.GitHub   8.0.0  == 8.0.0
 NodaTime                     3.1.11 == 3.1.11

Version color legend:
<red>   : Major version update or pre-release version. Possible breaking changes.
<yellow>: Minor version update. Backwards-compatible features added.
<green> : Patch version update. Backwards-compatible bug fixes.

You can upgrade packages to the latest version by passing the -u or -u:prompt option.
Elapsed: 00:00:07.6445084

Un paquete se quedo en el camino (lo eliminé de la referencia del proyecto y del código, puesto que ya esta integrado al parecer con .Net 8.0 Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Realicé mis pruebas de integración y unitarias, corigiendo todo lo que debería corregir. (Referencias a propiedades y llamadas a métodos erroneos para las nuevas versiones).

Cuando todo esto ha estado resuelto he seguido con el siguiente paso.

Nota: He utilizado estos comandos también, y revisado documentación.

dotnet list package
dotnet list package --outdated

https://learn.microsoft.com/en-us/training/modules/dotnet-dependencies/

 

2 - Actualizando los proyectos .net:

Para hacer esto utilizamos la herramienta upgrade-assistant

dotnet tool install -g upgrade-assistant

Una vez que esta instalada la he utilizado asi:

 upgrade-assistant upgrade .

 

La salida a este comando es esta:

 Selected options
───────────────────────────────────────────────────────────
No options specified, follow steps below to continue


Steps
─────────────────
Source project
─────────────────


Which project do you want to upgrade (found 8)?

> DasBlog.CLI (DasBlog.CLI\DasBlog.CLI.csproj)
 DasBlog.Core (DasBlog.Web.Core\DasBlog.Core.csproj)
 DasBlog.Managers (DasBlog.Web.Repositories\DasBlog.Managers.csproj)
 DasBlog.Services (DasBlog.Services\DasBlog.Services.csproj)
 DasBlog.Test.Integration (DasBlog.Tests\DasBlog.Test.Integration\DasBlog.Test.Integration.csproj)
 DasBlog.Tests.UnitTests (DasBlog.Tests\UnitTests\DasBlog.Tests.UnitTests.csproj)
 DasBlog.Web (DasBlog.Web.UI\DasBlog.Web.csproj)
 newtelligence.DasBlog.Runtime (newtelligence.DasBlog.Runtime\newtelligence.DasBlog.Runtime.csproj)

 Navigation
   Exit

 

Se elijen cada uno de ellos, y el asistente de actualización hace su trabajo.

Al final si vemos la hitoria de git tenemos lo siguiente:

@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
   <OutputType>ExeOutputType>
   <TargetFramework>net6.0TargetFramework> <<---- ANTES
   <TargetFramework>net8.0TargetFramework> ---->> DESPUES

 

Nota: Podeis encontrar mayor información del uso del asistente de actualización aqui:

How to install the .NET Upgrade Assistant - .NET Core | Microsoft Learn

Modernize ASP.NET Framework to ASP.NET Core with the .NET Upgrade Assistant - Training | Microsoft Learn

3 - Commit y Push para iniciar CI/CD

Al final realizando un git commit -m "Update Blog to .Net 8.0" y un git push. Todo se ha quedado en mi slot de qua en el Azure Service, he realizado el switch slot de qua production. Y desde ese momento tengo mi Blog, actualizado a .Net 8.0.

What’s New in .NET 8 類 ? Discover ALL .NET 8 Features⚡ | ABP Community

 


Comment Section

Comments are closed.