Atualizando um projeto universitário de 20 anos para .NET 6 com dotnet-upgrade-assistant



Eu escrevi um Sistema operacional digital minúsculo para uma aula de SO de nível 300 em C# para faculdade em 2001 (?) e depois mudou-o para VB.NET em 2002. Tudo isso é pré-.NET Core e no início do .NET 1.1 ou 2.0 no Home windows. Eu movido para o GitHub há 5 anos e portou para .NET Core 2.0 na época. Naquela época, ele tinha 15 anos, então foi authorized ver esse projeto rodando no Home windows, Linux, no Docker e em um Raspberry Pi… uma máquina que não existia quando o projeto foi escrito originalmente.

OBSERVAÇÃO: Se a linha do tempo estiver confusa, eu já estava trabalhando na indústria há anos neste ponto, mas ainda estava me esforçando em meu curso de 4 anos à noite. Eventualmente, levei 11 anos para concluir meu BS em Engenharia de Software program.

Esta noite, enquanto as crianças dormiam, eu queria ver se conseguia correr Assistente de atualização do .NET neste aplicativo de 20 anos e colocá-lo em execução no .NET 6.

Vamos começar:

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

We're eager 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 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

Viu como o processo é interativo na linha de comando, com prompts coloridos e uma série de perguntas dinâmicas de múltipla escolha?

Atualizando um projeto universitário de 20 anos para .NET 6 com dotnet-upgrade-assistant

Curiosamente, ele funciona na primeira tentativa, sem erros.

Quando olho manualmente para o .csproj, consigo ver alguns números de versão estranhos, provavelmente de alguma versão não muito pronta do .NET Core 2 que usei há muitos anos. Meu sentido de aranha diz que isso está errado, e presumo que o assistente de atualização não entendeu.

    

Também notei uma referência comentada ao ILLink.Duties, que period um recurso de visualização no Linker do Mono para reduzir o tamanho closing dos aplicativos e apará-los em árvore. Algumas dessas funcionalidades estão incorporadas ao .NET 6 agora, então usarei isso durante o processo de construção e empacotamento mais tarde. A referência não é necessária hoje.

Vou atualizá-los às cegas para o .NET 6 e ver o que acontece. Eu poderia fazer isso apenas alterando os números e vendo se ele restaura e constrói, mas também posso tentar dotnet desatualizado que continua sendo uma ferramenta adorável no package de ferramentas do atualizador.

imagem

Essa ferramenta “desatualizada” é boa porque ela se comunica com o NuGet e confirma que há versões mais recentes de determinados pacotes.

Nos meus testes – que eram apenas arquivos em lote naquela época – eu estava chamando meu aplicativo dotnet assim:

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

Isso mudará para a forma moderna em apenas TinyOSCore.exe 512 scott13.txt com um exe e args e sem cerimônia.

Publicar e aparar meu TinyOS se transforma em apenas um EXE de 15 meg. Authorized, considerando que o .NET que preciso está lá sem instalação separada. Eu poderia transformar esse pequeno SO sintético em um microsserviço se quisesse ser totalmente further.

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

Se eu adicionar

-p:EnableCompressionInSingleFile=true

Então é ainda menor. Nenhuma alteração de código. Execute todos os meus testes, parece bom. Meu projeto da universidade do .NET 1.1 agora é .NET 6.0, multiplataforma, autocontido em 11 megas em um único EXE. Authorized.


Patrocinador: Na Rocket Mortgage®, o trabalho que você faz aqui será 100% impactante, mas não tomará todo o seu tempo livre, dando a você o equilíbrio perfeito entre trabalho e vida. Ou como chamamos, equilíbrio entre tecnologia e vida! Saber mais.




Sobre Scott

Scott Hanselman é um ex-professor, ex-arquiteto-chefe em finanças, agora palestrante, consultor, pai, diabético e funcionário da Microsoft. Ele é um comediante de stand-up fracassado, um cornrower e um autor de livros.

Facebook
Twitter
inscrever-se
Sobre Boletim informativo

Hospedagem por
Hospedado em um Serviço de Aplicativo do Azure










Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *