FloatingGlucose bijwerken naar .NET 5 – Nightscout- of Dexcom-glucosewaarden weergeven op het Windows-bureaublad

Vorige maand heb ik geleerd hoe je een 13 jaar oude .NET app converteert naar modern .NET 5 met de “try convert” tool. Het was verrassend eenvoudig om een ​​”legacy” -app goed naar voren te brengen in een behoorlijk coole, op zichzelf staande app. Dat betekent GEEN .NET-installatie. Voer gewoon een exe uit en u bent klaar.

Ik vond deze 5 jaar oude .NET-applicatie genaamd Drijvende Glucose van Bjørn die verbinding maakt met een open source diabetesserver van Nightscout zoals degene die ik gebruik en die uw huidige glucosewaarden weergeeft in een zwevende pop-up op uw Windows-bureaublad. Het kan ook verbinding maken met de Dexcom Share-servers. De app heeft echter een installatieprogramma en vereist dat .NET 4.6 is geïnstalleerd.

Hoe snel – en met succes – kan ik het converteren naar een zelfstandige .NET 5-app? Ik weet het niet, ik heb dat deel van deze blogpost nog niet geschreven. Ik ben nog steeds hier.

Laten we het proberen.

Oké, ik heb het hier gevorkt https://github.com/shanselman/FloatingGlucose en ik breng het naar mijn lokale computer.

Ik begon met behulp van de GitHub CLI de laatste tijd en het is geweldig, dus ik zal ermee klonen.

OPMERKING: Het verbaast me dat ik niet kan klonen EN submodules kan krijgen met de GH CLI, dus ik denk dat het nodig is git submodule update --init --recursive na het eerste gebruik van GH.

En het lijkt erop dat GH verouderd is, dus ik ‘winget install gh’ om het bij te werken terwijl ik hier ben.

Stoer. Nu zal ik gebruiken de dotnet-upgrade-assistent. Deze tutorial zal je laten zien hoe. De upgrade-assistent is een volledige op tekst gebaseerde opdrachtregelwizard waarmee u oplossingen kunt bijwerken.

Upgrade Steps

Entrypoint: C:githubFloatingGlucoseFloatingGlucoseFloatingGlucose.csproj
Current Project: C:githubFloatingGlucoseFloatingGlucoseFloatingGlucose.csproj

1. [Skipped] Back up project
2. [Next step] Convert project file to SDK style
3. Clean up NuGet package references
4. Update TFM
5. Update NuGet Packages
6. Add template files
7. Upgrade app config files
a. Convert Application Settings
b. Disable unsupported configuration sections
8. Update source code
a. Apply fix for UA0012: 'UnsafeDeserialize()' does not exist
9. Move to next project

Choose a command:
1. Apply next step (Convert project file to SDK style)
2. Skip next step (Convert project file to SDK style)
3. See more step details
4. Configure logging
5. Exit
> 1
[22:25:49 INF] Applying upgrade step Convert project file to SDK style
[22:25:49 INF] Converting project file format with try-convert, version 0.7.222801
[22:25:52 INF] [try-convert] Conversion complete!
[22:25:52 INF] Project file converted successfully! The project may require additional changes to build successfully against the new .NET target.
[22:25:55 INF] Upgrade step Convert project file to SDK style applied successfully
Please press enter to continue...

Dus ik ga stap voor stap door het proces en beantwoord vragen. Oke, klaar. Eens kijken of het bouwt.

Het lijkt erop dat dat niet zo is. Het heeft een aangepast PowerShell-script dat probeert InnoSetup aan te roepen en een installatieprogramma te maken. Omdat ik een versie wil maken waarvoor geen installatieprogramma nodig is, kan ik dat allemaal verwijderen uit PostBuildEvent en PreBuildEvent in het hoofdbestand csproj.

Nu krijg ik een aantal compilerfouten die geen verband houden met de conversie, maar eerder een misverstand over hoe uitzonderingen opnieuw moeten worden gegooid.

Als je “throw err” zegt, verlies je feitelijk je call stack en context.

else
{
//rethrow because we don't know how to handle other errors
throw err;
}

In plaats daarvan gewoon:

else
{
//rethrow because we don't know how to handle other errors
throw;
}

throw om de huidige foutcontext te behouden. Ik ben op dit punt gewoon aan het opruimen.

Ik zie een paar waarschuwingen zoals:

C:githubFloatingGlucoseFloatingGlucoseFormWebbrowser.cs(10,6): 
warning SYSLIB0003: 'PermissionSetAttribute' is obsolete:
'Code Access Security is not supported or honored by the runtime.'

en ik becommentarieer ze omdat ze op dit moment rudimentair zijn.

Ik heb een laatste fout:

Could not resolve this reference. Could not locate the assembly "System.Windows.Forms.DataVisualization".

Interessant, waar gaat dit over? Het lijkt erop dat niet alle Windows Forms DataVisualization-projecten voor .NET 5 zijn gemaakt? De oudere code is hier https://github.com/dotnet/winforms-datavisualization voor .NET Core 3. Het leesmij-bestand zegt: “We beschouwen het System.Windows.Forms.DataVisualization verouderd en we bieden het alleen om het porten naar .NET Core 3 te vergemakkelijken “

Angelo Cresta heeft hier echter een .NET 5-versie https://github.com/AngeloCresta/winforms-datavisualization-net5 dus ik kan proberen bij te werken naar zijn versie. Ik zal het binnenbrengen als een submodule en het vervolgens toevoegen als een projectreferentie vanuit de hoofdapp FloatingGlucose.

Ik zal ook de JSON.NET-referentie verhogen van 9 naar 13.0.1

OPMERKING: ik zal ook een dotnet_diagnostic.CA1416.severity = none in een .editorconfig om te voorkomen dat de compiler me waarschuwt dat dit Windows 7 en hoger vereist.

Boom, deze 5 jaar oude app is nu een .NET 5-app en bouwt schoon. SCHIP HET. Nou, test en voer het eerst uit, hè?

2>Done building project "FloatingGlucose.csproj".
========== Build: 2 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========

Mooi, een schone, waarschuwingsvrije build EN het start onmiddellijk EN ziet er goed uit op mijn 4k-monitor, waarschijnlijk vanwege het werk dat is gedaan om WinForms-apps mooi te laten schalen op hoge dpi-systemen.

Drijvende glucose

Werkt het? Verdorie, het doet het.

beeld

Fantastisch. Nu heb ik een kleine widget die ik altijd op mijn scherm kan hebben die mijn huidige suikers laat zien!

En tot slot, kan ik er een enkele niet-te installeren EXE van maken waarvoor .NET niet eens geïnstalleerd hoeft te worden?

dotnet publish --configuration Release --runtime=win10-x64 --output ./publish -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true --self-contained=true -p:DebugType=None .FloatingGlucoseFloatingGlucose.csproj

Ja, nu heb ik een enkele EXE die ik nu kan gebruiken .NET 5 WinForms-app:

Drijvende glucose

Fantastisch. Dat was leuk. Duurde ongeveer 2 uur. Overweeg of U uw “oude” codebase kunt updaten naar .NET 5 en de voordelen kunt plukken! Hier is de ‘werkt op mijn machine’ late night release. PR is welkom. Nacht!


Sponsor: De nummer 1 reden waarom ontwikkelaars voor Couchbase kiezen? U kunt uw bestaande SQL ++ -vaardigheden gebruiken om eenvoudig JSON op te vragen en te openen. Dat is meer kracht en flexibiliteit met minder training. Kom meer te weten.

Over Scott

Scott Hanselman is een voormalig professor, voormalig Chief Architect in Finance, nu spreker, consultant, vader, diabetespatiënt en Microsoft-medewerker. Hij is een mislukte stand-upstrip, een cornrower en een boekauteur.

facebook
twitter
abonneren
Over Nieuwsbrief

Hosting door
Gehost in een Azure App Service

CreditSource link

We will be happy to hear your thoughts

Leave a reply

Pan-Belgium
Logo
Compare items
  • Total (0)
Compare
0
Shopping cart