Actualizando mi blog de .Net 6.0 a .Net 8.0
March 21, 2024 13:15La 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 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:
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.
: He utilizado estos comandos también, y revisado documentación.
dotnet list package
dotnet list package --outdated
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 .
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
@@ -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:
3 - Commit y Push para iniciar CI/CD
Al final realizando un 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
Comments are closed.