13 jaar geleden schreef ik een .NET 3.5 WPF-applicatie voor mijn toen 2-jarige baby / peuter. Misschien was hij 18 maanden. Hij was klein. Hij wil nu rijden. https://www.babysmash.com/ blijft een ding, zelfs vandaag. Kort geleden “Chris The Meme God” had een 20 miljoen TikTok bekijken met BabySmash… waar hij de URL niet noemde. Zucht.
Hoe dan ook, de code is op http://github.com/shanselman/babysmash al jaren en afgezien van een paar kleine reparaties, echt niet aangeraakt in 4 of 5 jaar.
Tot Cathy Sullivan van het .NET-team gebruikte BabySmash als testapplicatie om te upgraden naar .NET 5 in het jaar 2021. Ze gebruikte de .NET Upgrade-assistent. Ze heeft zelfs het upgradeproces LIVE GESTREAMD!
Cathy stuurde me een PR en we plaatsten de resulterende .NET 5 BabySmash-applicatie in een nieuwe dotnet5-tak op https://github.com/shanselman/babysmash/tree/dotnet5. Ik zou je willen aanmoedigen om het te bekijken, want het is nu heel gemakkelijk te bouwen.
Zorg ervoor dat je de dotnet5 branch en “dotnet build” daar vandaan haalt, niet de main branch.
De versie die Cathy me stuurde, bouwde geweldig in Visual Studio, maar had een klein probleem bij het bouwen vanaf de opdrachtregel. gelukkig Alex Elia gevolgd door een eigen PR waarmee BabySmash netjes vanaf de opdrachtregel kon bouwen met alleen de .NET 5 SDK.
Hij zei:
Ik was niet gemakkelijk in staat om artefacten te vinden voor de .NET 5.0-versie van BabySmash, dus deed ik een pull-aanvraag tegen de repository met een continue integratiepijplijn, bijgewerkte README en aanpassingen om het gebruik van de .NET CLI voor build / run / publish mogelijk te maken workflows.
https://github.com/shanselman/babysmash/pull/25
Het was een projectobject [that prevented it from building from the command line.] De .NET CLI richt zich op één versie van MSBuild, terwijl Visual Studio / devenv.exe zich op een andere richt. Er was een bepaalde eigenschap, GenerateManifests, in de csproj die door de .NET CLI-versie van MSBuild werd afgewezen.
De eigenschap GenerateManifests die is ingesteld op true chain, leidt tot een aanroep naar MSBuild voor een taak FormatUrl (https://docs.microsoft.com/en-us/visualstudio/msbuild/formaturl-task?view=vs-2019) die tamelijk intuïtief wordt genoemd; Het formatteert een URL. De .NET CLI-versie van MSBuild ondersteunt deze taak niet en weigert dus de build.
Interessante opmerking waarom het moeilijk was om dit te vinden. WPF-projecten activeren een build-taak genaamd MarkupCompilePass1 (https://docs.microsoft.com/en-us/visualstudio/msbuild/markupcompilepass1-task?view=vs-2019) om de xaml / cs views-bestanden te verwerken tot gegenereerde .g.cs- en baml-bestanden. Als de build is mislukt vanwege de GenerateManifests-fout, loopt dat dotnet.exe-proces vast en zullen daaropvolgende builds mislukken als gevolg van een botsing op de door WPF .g.cs gegenereerde bestanden.
Fantastisch! Ik heb dit opgevolgd kleine aanpassing naar de “dotnet publish” opdrachtregel waarmee we nu een enkel babysmash.exe-bestand dat omvat de hele app en .NET, ZONDER INSTALLATIE.
dotnet publish --configuration Release --runtime=win10-x64 --output ./publish -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true --self-contained=true -p:DebugType=None
U kunt het babysmash.exe van https://github.com/shanselman/babysmash/releases/tag/dotnet5-v0.1 als je wilt, of installeer gewoon de oude van http://www.babysmash.com!
Sponsor: Verleng uw landingsbaan en vergroot uw bereik. Oracle for Startups levert enterprise cloud tegen een startup-prijskaartje met gratis cloud-credits om u te helpen de grote vis binnen te halen – vol vertrouwen. Kom meer te weten!
Over Scott
Scott Hanselman is een voormalig professor, voormalig hoofdarchitect in financiën, nu spreker, consultant, vader, diabetespatiënt en Microsoft-medewerker. Hij is een mislukte stand-upstrip, een cornrower en een boekauteur.
CreditSource link