C# Anfängerfragen (Umstieg .NET 4.7 -> .NET 5)

Ghost_Rider_R

Lieutenant
Registriert
Nov. 2009
Beiträge
752
Hallo zusammen,

ich bin seither vor allem im Bereich .NET Framework mit WPF und 4.7 unterwegs gewesen und möchte nun gerne mit der Zeit gehen, da die GUI doch ein wenig altbacken ist im Vergleich zu WinUI3 (Fluent Design, Runde Buttons etc.).

Soweit so gut, leider habe ich einige Startschwierigkeiten, welche sich aber schnell beantworten lassen müssten. Ich werfe daher einfach mal ganz wild mit Anfängerfragen um mich 😄:

  1. Ist .NET 5 mit WinUI3 der Way 2 Go um meine bisherige Vorgehensweise abzulösen? In erster Linie erstelle ich 0815 Desktop-Apps mit ein paar Buttons, Textboxen hier und da und ein paar Checkboxen und Radiobuttons, etc. nix besonderes und hier und da mal eine Konsolenanwendung.
  2. Ich habe festgestellt, dass ich nach dem Klick auf Debug bzw. Kompilieren im Bin\Debug bzw. Bin\Release nun diverse Dateien vorfinde, allerdings lässt sich die Exe darin selbst nicht ausführen. Da passiert einfach gar nichts. Mach ich da was falsch? und muss ich das eventuell über ,,Veröffentlichen" machen? Seither war das soviel ich weiß nicht notwendig. Außerdem habe ich gehört, dass die Dateien teilweise extrem groß (80-120MB) seien sollen. Im Idealfall hätte ich gerne wieder eine Anwendung, welche nur ein paar Kilobyte groß ist und aus einer einzelnen Exe Datei besteht, ohne irgendetwas. Geht das oder ist das jetzt einfach anders? Da soll es zwar so einen Single-Exe-File Modus geben, aber trotzdem mit rießiger Dateigröße, auch bei diesem Split-Modus sollen es noch an die 40MB sein.
  3. Wie blende ich die GUI-Vorschau ein? ich sehe im Designer momentan nur meinen XAML Code.
  4. Wie kann ich das Fenster auf nicht Skalierbar setzten? Damals gab es ja ein Attribut namens Windowsize = Fixed Single oder so ähnlich. Dann war das Fenster nicht mehr skalierbar.
  5. Sind alte DLLs aus 4.7 kompatibel mit .NET 5?
  6. Ich habe festgestellt, dass der Dateizugriff eingeschränkt ist. Unter 4.7 konnte ich einfach in jedes Verzeichnis, in das der Benutzer Schreibrechte hat Dateien Lesen und Schreiben. Geht das so unter .NET 5 nicht mehr bzw. nur noch über Umwege?
  7. Gibt es eventuell eine gute Übersicht, welche mich mal die gröbsten Unterschiede aufzeigt?
Da kommen bestimmt noch mehr Fragen dazu, aber das wären jetzt mal die ersten Hürden welche ich nehmen müsste.

Vielen Dank schon mal für eure Hilfe.

LG Ghost Rider 👻
 
Ohne zu wissen ob du produktiv entwickelst hier ein paar Eindrücke:

1. .NET 5 ist grundsätzlich sicherlich der richtige Weg. Bei WinUI3 bin ich mir noch nicht so sicher, Project Reunion ist noch nichtmal bei 1.0 angelangt. Ist halt preview und das wird noch so einige Zeit dauern bis das wirklich nutzbar ist, WPF hat ehrlich gesagt Jahre gedauert.
2. Das ist jetzt relativ normal, es gibt wege das zu verkleinern, trimming usw. In .NET 5 geht da aber nur bedingt was. Das wird angeblich mit 6 besser. Aber wirklich klein werden die trotzdem nicht werden, die 30kb exe ist ziemlich sicher ein Ding der Vergangeheit. Ansonsten ja, publish to directory ist der richtige Weg, der bundled (je nach settings) alle notwendigen Dateien.
3/4. Tooling von WinUI3 habe ich bisher nicht auspobiert, mach keine WinUI Themen. Einschränkungen ggf. auch hier nachzulesen: https://docs.microsoft.com/de-de/windows/apps/winui/winui3/#limitations-and-known-issues
5. Jein, eigentlich nur wenn die DLLs eine der diversen .NET Standard Versionen unterstützt, es gibt eine Art Kompatibilitätsmodus, der gut geht, solange du keine Sachen brauchst die in .NET 5 nicht mehr supported sind. Siehe u.A. hier: https://github.com/dotnet/standard/tree/master/docs/planning/netstandard-2.0
6. Nicht das ich wüßte, ich kenne keine Einschränkungen bzgl. Dateioperationen in .NET 5
7. ggf. mal https://docs.microsoft.com/de-de/dotnet/core/porting/ lesen.

Persönliche Meinung?
Für produktive Entwicklung würde ich aktuell kein WinUI3 einsetzen, sondern ersmal .NET 6 und oder Reunion 1.0 abwarten.
Konsolenapplikationen kannst du natürlich jetzt schon ohne Probleme in .NET 5 entwickeln.
 
Zuerst vielen Dank für die bisherige Rückmeldung 👌🏻

Punkt 1: Vielleicht muss es auch noch nicht WinUI3 zu Beginn sein, wie müsste denn die Visual Studio Projektvorlagen lauten für eine sagen wir leere WPF .NET 5 App & leere .NET 5 Konsolenanwendung? ich finde da bei mir irgendwie nichts in den Vorlagen, diese verweisen alle auf das alte .NET Framework 4.7/4.8.

Punkt 2: Ok, finde ich dann aber doch recht abschreckend, kann mir hier jemand die Hintergründe erläutern? Dann hätte ja jede noch so kleine Taschenrechner / Hello World ab .NET 5 künftig ~100MB+ 😰. Wenn ich da mal eben etwas auf unseren Server stellen möchte, dann dauert das ja fortan gefühlt eine Ewigkeit bei der Größe.

Punkt 5: Sind denn eigentlich die meisten Klassenbezeichnungen identisch oder muss man sich da wieder komplett neu einlernen? also so ganz rudimentäre Sachen wie z.B. File.WriteAllText / String.Join / new List<String> oder haben die Klassen größtenteils ihre Bezeichnung unter .NET 5 beibehalten sodass der Code gleich bis ähnlich bleibt?

Punkt 6: Ich hatte unter anderem auch mit einer UWP-App herumgespielt, habe ich das eventuell etwas verwechselt und dies betrifft nur UWP-Apps?

Vielen Dank für eure Hilfe.

LG Ghost Rider
 
wenn die Runtime auf den Zielsystem installiert ist kann eine Konsolen Anwendung weiterhin realtiv klein bleiben.

Bei uns Bundeln wir immer die benötigte Runtime mit, so kommen bei WPF Anwendungen von ca. 80 bis 300 MB Größe bei raus, je nachdem was noch an Erweterungen mit benötigt wird (Devexpress)

Zu 5. da hat sich wegen .Net Standard nichts dran geändert.
 
Wegen dem WinUI3, habe ich das jetzt richtig aufgefasst, dass das noch in den Kinderschuhen steckt und für richtige Projekte noch nicht verwendet werden sollte? Ich hätte keinen Schmerz damit, wenn ich weiß, dass das noch irgendwann ganz offiziell kommt, dann würde ich bis dahin einfach bei WPF bleiben.

Kann mir eventuell noch jemand sagen, was es mit dem Ready 2 Run Feature auf sich hat? sollte man das immer aktivieren?

Die restlichen Fragen sind soweit geklärt.

Liebe Grüße Ghost Rider 🐱‍🏍
 
Zuletzt bearbeitet:
Bei Ready2Run geht es um Performanceoptimierung. Kann man aktivieren, aber typischerweise sollte man eine .NET Anwendung "AnyCPU" erzeugen - damit funktioniert Ready2Run als Optimierung nicht. Dafür läuft die Anwendung aber auf jedem System (d.h. sowohl auf Windows 32 Bit, Windows 64 Bit, Linux 32 Bit, Linux 64 Bit etc. pp. auf einmal), anstatt nur auf einem vorab definierten System (z.B. Windows x64).

Kommt immer auf den Anwendungsbereich an ;-).
 
  • Gefällt mir
Reaktionen: Ghost_Rider_R
Zurück
Oben