Home Programming News Upgrading a 20 yr outdated College Undertaking to .NET 6 with dotnet-upgrade-assistant

Upgrading a 20 yr outdated College Undertaking to .NET 6 with dotnet-upgrade-assistant

0
Upgrading a 20 yr outdated College Undertaking to .NET 6 with dotnet-upgrade-assistant

[ad_1]


I wrote a Tiny Digital Working System for a 300-level OS class in C# for faculty again in 2001 (?) and later moved it to VB.NET in 2002. That is all pre-.NET Core, and on early .NET 1.1 or 2.0 on Home windows. I moved it to GitHub 5 years in the past and ported it to .NET Core 2.0 on the time. At this level it was 15 years outdated, so it was cool to see this challenge operating on Home windows, Linux, in Docker, and on a Raspberry Pi…a machine that did not exist when the challenge was initially written.

NOTE: If the timeline is complicated, I had already been working in trade for years at this level however was nonetheless plugging away at my 4 yr diploma at evening. It will definitely took 11 years to finish my BS in Software program Engineering.

This night, as the kids slept, I needed to see if I might run the .NET Improve Assistant on this now 20 yr outdated app and get it operating on .NET 6.

Let’s begin:

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

We're focused on 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 challenge in resolution: C:UsersscottTinyOSsrcTinyOSCoreTinyOSCore.csproj
[22:58:07 INF] Recommending executable TFM net6.0 as a result of the challenge builds to an executable
[22:58:07 INF] Initializing improve step Choose challenge to improve
[22:58:07 INF] Recommending executable TFM net6.0 as a result of the challenge builds to an executable
[22:58:07 INF] Recommending executable TFM net6.0 as a result of the challenge builds to an executable
[22:58:07 INF] Initializing improve step Again up challenge

See how the method is interactive on the command line, with shade prompts and a sequence of dynamic multiple-choice questions?

Updating .NET project with the upgrade assistant

Curiously, it builds on the primary strive, no errors.

After I manually have a look at the .csproj I can see some bizarre model numbers, possible from some not-quite-baked model of .NET Core 2 I used a few years in the past. My spidey sense says that is flawed, and I am assuming the improve assistant did not perceive it.

    <!-- <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" />

I additionally notice a commented-out reference to ILLink.Duties which was a preview characteristic in Mono’s Linker to cut back the ultimate dimension of apps and tree-trim them. A few of that performance is constructed into .NET 6 now so I will use that throughout the construct and packaging course of later. The reference just isn’t wanted at this time.

I am gonna blindly improve them to .NET 6 and see what occurs. I might do that by simply altering the numbers and seeing if it restores and builds, however I may also strive dotnet outdated which stays a stunning instrument within the upgrader’s toolkit.

image

This “outdated” instrument is good because it talks to NuGet and confirms that there are newer variations of sure packages.

In my assessments – which had been simply batch information at this early time – I used to be calling my dotnet app like this:

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

This may change to the fashionable type with simply TinyOSCore.exe 512 scott13.txt with an exe and args and no ceremony.

Publishing and trimming my TinyOS turns into only a 15 meg EXE. Good contemplating that the .NET I want is in there with no separate set up. I might flip this little artificial OS right into a microservice if I needed to be completely additional.

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

If I add

-p:EnableCompressionInSingleFile=true

Then it is even smaller. No code adjustments. Run all my assessments, seems good. My challenge from college from .NET 1.1 is now .NET 6.0, cross platform, self-contained in 11 megs in a single EXE. Candy.


Sponsor: At Rocket Mortgage® the work you do round right here will probably be 100% impactful however received’t take all of your free time, providing you with the proper work-life stability. Or as we name it, tech/life stability! Study extra.




About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, marketing consultant, father, diabetic, and Microsoft worker. He’s a failed stand-up comedian, a cornrower, and a e book writer.

facebook
twitter
subscribe
About   Publication

Internet hosting By
Hosted in an Azure App Service










[ad_2]

LEAVE A REPLY

Please enter your comment!
Please enter your name here