Actualización de un proyecto universitario de 20 años a .NET 6 con dotnet-upgrade-assistant



escribí un Pequeño sistema operativo digital para una clase de SO de nivel 300 en C# para la universidad en 2001 (?) y posteriores lo movió a VB.NET en 2002. Todo esto es anterior a .NET Core y a principios de .NET 1.1 o 2.0 en Home windows. yo lo moví a GitHub hace 5 años y lo portó a .NET Core 2.0 en ese momento. En ese momento tenía 15 años, por lo que fue genial ver este proyecto ejecutándose en Home windows, Linux, en Docker y en una Raspberry Pi… una máquina que no existía cuando se escribió originalmente el proyecto.

NOTA: Si la línea de tiempo es confusa, ya había estado trabajando en la industria durante años en este momento, pero todavía estaba trabajando en mi título de 4 años por la noche. Eventualmente me tomó 11 años completar mi BS en Ingeniería de Software program.

Esta noche, mientras los niños dormían, quería ver si podía correr el Asistente de actualización de .NET en esta aplicación que ahora tiene 20 años y haz que se ejecute en .NET 6.

Empecemos:

$ upgrade-assistant improve .TinyOS.sln
-----------------------------------------------------------------------------------------------------------------
Microsoft .NET Improve Assistant v0.3.256001+3c4e05c787f588e940fe73bfa78d7eedfe0190bd

We're all in favour of your suggestions! Please use the next hyperlink to open a survey: https://aka.ms/DotNetUASurvey
-----------------------------------------------------------------------------------------------------------------

(22:58:01 INF) Loaded 5 extensions
(22:58:02 INF) Utilizing MSBuild from C:Program Filesdotnetsdk6.0.100
(22:58:02 INF) Utilizing Visible Studio set up from C:Program FilesMicrosoft Visible Studio2022Preview (v17)
(22:58:06 INF) Initializing improve step Choose an entrypoint
(22:58:07 INF) Setting entrypoint to solely undertaking in answer: C:UsersscottTinyOSsrcTinyOSCoreTinyOSCore.csproj
(22:58:07 INF) Recommending executable TFM net6.0 as a result of the undertaking builds to an executable
(22:58:07 INF) Initializing improve step Choose undertaking to improve
(22:58:07 INF) Recommending executable TFM net6.0 as a result of the undertaking builds to an executable
(22:58:07 INF) Recommending executable TFM net6.0 as a result of the undertaking builds to an executable
(22:58:07 INF) Initializing improve step Again up undertaking

¿Ve cómo el proceso es interactivo en la línea de comandos, con indicaciones en coloration y una serie de preguntas dinámicas de opción múltiple?

Actualización del proyecto .NET con el asistente de actualización

Curiosamente, se basa en el primer intento, sin errores.

Cuando miro manualmente el .csproj, puedo ver algunos números de versión extraños, probablemente de alguna versión no completamente horneada de .NET Core 2 que usé hace muchos años. Mi sentido arácnido cube que esto está mal, y asumo que el asistente de actualización no lo entendió.

    <!-- <PackageReference Embrace="ILLink.Duties" Model="0.1.4-preview-906439" /> -->
<PackageReference Embrace="Microsoft.Extensions.Configuration" Model="2.0.0-preview2-final" />
<PackageReference Embrace="Microsoft.Extensions.Configuration.Json" Model="2.0.0-preview2-final" />
<PackageReference Embrace="Microsoft.Extensions.DependencyInjection" Model="2.0.0-preview2-final" />
<PackageReference Embrace="Microsoft.Extensions.Choices.ConfigurationExtensions" Model="2.0.0-preview2-final" />

También observo una referencia comentada a ILLink.Duties, que period una función de vista previa en Mono’s Linker para reducir el tamaño closing de las aplicaciones y recortarlas en árbol. Parte de esa funcionalidad está integrada en .NET 6 ahora, así que la usaré durante el proceso de compilación y empaquetado más adelante. La referencia no es necesaria hoy.

Los actualizaré ciegamente a .NET 6 y veré qué sucede. Podría hacer esto simplemente cambiando los números y viendo si se restaura y construye, pero también puedo probar dotnet desactualizado que sigue siendo una herramienta encantadora en el conjunto de herramientas del actualizador.

imagen

Esta herramienta “obsoleta” es buena porque habla con NuGet y confirma que hay versiones más nuevas de ciertos paquetes.

En mis pruebas, que eran solo archivos por lotes en este momento temprano, estaba llamando a mi aplicación dotnet así:

dotnet netcoreapp2.0/TinyOSCore.dll 512 scott13.txt  

Esto cambiará a la forma moderna con solo TinyOSCore.exe 512 scott13.txt con un exe y argumentos y sin ceremonia.

Publicar y recortar mi TinyOS se convierte en solo un EXE de 15 megas. Agradable teniendo en cuenta que el .NET que necesito está ahí sin una instalación separada. Podría convertir este pequeño sistema operativo sintético en un microservicio si quisiera ser totalmente further.

dotnet publish -r win-x64 --self-contained -p:PublishSingleFile=true -p:SuppressTrimAnalysisWarnings=true

si agrego

-p:EnableCompressionInSingleFile=true

Entonces es aún más pequeño. Sin cambios de código. Ejecutar todas mis pruebas, se ve bien. Mi proyecto de la universidad de .NET 1.1 ahora es .NET 6.0, multiplataforma, autónomo en 11 megas en un solo EXE. Dulce.


Patrocinador: En Rocket Mortgage®, el trabajo que realiza aquí tendrá un 100 % de impacto, pero no ocupará todo su tiempo libre, lo que le brindará el equilibrio perfecto entre el trabajo y la vida private. O como lo llamamos, ¡equilibrio entre tecnología y vida! Aprende más.




Acerca de Scott

Scott Hanselman es un ex profesor, ex arquitecto jefe en finanzas, ahora orador, consultor, padre, diabético y empleado de Microsoft. Es un comediante fracasado, un trenzador de maíz y un autor de libros.

Facebook
gorjeo
suscribir
Acerca de Boletin informativo

Hospedaje por
Alojado en un servicio de aplicaciones de Azure










Related Articles

Apple Music lanza Highway to Halftime de Rihanna antes del Tremendous Bowl LVII

30 de enero de 2023 PRESIONE SOLTAR Apple Music lanza...

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Same Category

spot_img

Stay in touch!

Follow our Instagram