9.6 C
New York

Mise à niveau d’un projet universitaire vieux de 20 ans vers .NET 6 avec dotnet-upgrade-assistant



j’ai écrit un Système d’exploitation virtuel minuscule pour une classe de système d’exploitation de niveau 300 en C# pour l’université en 2001 (?) et plus tard déplacé vers VB.NET en 2002. Tout cela est pré-.NET Core et sur les premiers .NET 1.1 ou 2.0 sous Home windows. je déplacé vers GitHub il y a 5 ans et l’a porté sur .NET Core 2.0 à l’époque. À ce stade, il avait 15 ans, donc c’était cool de voir ce projet fonctionner sur Home windows, Linux, dans Docker et sur un Raspberry Pi… une machine qui n’existait pas lorsque le projet a été écrit à l’origine.

NOTE: Si la chronologie est déroutante, je travaillais déjà dans l’industrie depuis des années à ce stade, mais j’étais toujours en prepare de terminer mon diplôme de 4 ans la nuit. Il a finalement fallu 11 ans pour terminer mon BS en génie logiciel.

Ce soir, pendant que les enfants dormaient, j’ai voulu voir si je pouvais diriger le Assistant de mise à niveau .NET sur cette utility qui a maintenant 20 ans et faites-la fonctionner sur .NET 6.

Commençons:

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

We're desirous about 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 resolution: 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

Voyez remark le processus est interactif au niveau de la ligne de commande, avec des invitations de couleur et une série de questions dynamiques à choix multiples ?

Mise à jour du projet .NET avec l'assistant de mise à jour

Fait intéressant, il s’appuie sur le premier essai, sans erreur.

Lorsque je regarde manuellement le .csproj, je peux voir des numéros de model étranges, probablement d’une model pas tout à fait cuite de .NET Core 2 que j’ai utilisée il y a de nombreuses années. Mon sens aigu dit que c’est fake, et je suppose que l’assistant de mise à niveau ne l’a pas compris.

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

Je observe également une référence commentée à ILLink.Duties qui était une fonctionnalité de prévisualisation dans Mono’s Linker pour réduire la taille finale des functions et les arborer. Certaines de ces fonctionnalités sont désormais intégrées à .NET 6, je les utiliserai donc ultérieurement lors du processus de development et de conditionnement. La référence n’est pas nécessaire aujourd’hui.

Je vais les mettre à niveau aveuglément vers .NET 6 et voir ce qui se passe. Je pourrais le faire en changeant simplement les chiffres et en voyant s’il se restaure et se construit, mais je peux aussi essayer dotnet obsolète qui reste un bel outil dans la boîte à outils de l’upgrader.

image

Cet outil « obsolète » est agréable automobile il communique avec NuGet et confirme qu’il existe des variations plus récentes de certains packages.

Dans mes assessments – qui n’étaient que des fichiers batch à ce stade précoce – j’appelais mon utility dotnet comme ceci :

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

Cela passera à la forme moderne avec juste TinyOSCore.exe 512 scott13.txt avec un exe et des arguments et sans cérémonie.

La publication et le découpage de mon TinyOS se transforment en un easy EXE de 15 Mo. Bien vu que le .NET dont j’ai besoin est là sans set up séparée. Je pourrais transformer ce petit OS synthétique en microservice si je voulais être totalement additional.

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

Si j’ajoute

-p:EnableCompressionInSingleFile=true

Ensuite, c’est encore plus petit. Aucun changement de code. Exécutez tous mes assessments, semble bon. Mon projet universitaire de .NET 1.1 est maintenant .NET 6.0, multiplateforme, autonome en 11 Mo dans un seul EXE. Doux.


Parrainer: Chez Rocket Mortgage®, le travail que vous faites ici aura un influence à 100 % mais ne prendra pas tout votre temps libre, vous offrant un équilibre parfait entre vie professionnelle et vie privée. Ou comme nous l’appelons, l’équilibre approach/vie ! Apprendre encore plus.




À propos de Scott

Scott Hanselman est un ancien professeur, ancien architecte en chef en finance, maintenant conférencier, guide, père, diabétique et employé de Microsoft. C’est un comique raté, un cornrower et un auteur de livres.

Facebook
Twitter
s'abonner
À propos Bulletin

Hébergement par
Hébergé dans un Azure App Service










Related Articles

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Latest Articles