C# Umstieg .NET Framework 4.8 -> .NET 6 & Kompatibilität bei Bibliotheken

Ghost_Rider_R

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

ich habe hier ein Projekt, welches unter .NET 4.8 entwickelt wurde und möchte dieses nun auf .NET 6 migrieren. Da dies mein erster Gehversuch unter .NET 6 (5 habe ich bislang übersprungen) ist, habe ich hier ein paar Anfängerfragen 😊.

  1. Gibt es eine ,,richtige" Vorgehensweise für die Migrierung? Ich habe seither einfach die Version z.B. von 3.5 auf 4.7 anheben können, aber hier ist ja jetzt bei 4.8 schluss. Meine Vorgehensweise war nun ein neues .NET 6 Projekt zu erstellen und die Klassen einfach in das neue Projekt zu importieren, das hat auch funktioniert. Kann man das so machen? und soll man das so machen?
  2. Kann ich Bibliotheken, welche unter 4.8 erstellt wurden problemlos unter .NET 6 verwenden?
  3. Wie sieht es mit der Crossplattform-Kompatiblitität aus, wenn ich eine Bibliothek aus dem .NET Framework verwende? Entfällt diese dann einfach?
Vielen Dank schon mal für die Infos.

LG Ghost
 
1.) Wenn es läuft, ist alles gut. Es gibt auch ein Migrationstool von MS was ein bestehendes Projekt konvertieren kann (https://dotnet.microsoft.com/platform/upgrade-assistant). Meiner Meinung nach schneller, als alle Dateien ins neue Projekt zu holen und alle Einstellungen neu zu machen.
2) Kann man weiter nutzen.
3) Für Cross-Plattform muss alles netStandard / netCore oder net (ohne Framework) sein. NetFramework läuft nur auf Windows, auch wenn es nur eine Bibliothek ist. Ein Programm mit entsprechender Abhängigkeit startet afaik auf Linux z.B. gar nicht.
 
  • Gefällt mir
Reaktionen: madmax2010 und Ghost_Rider_R
Super, dann hätte ich da nochmal zwei Fragen:

Spricht sonst etwas dagegen eine .NET Framework Library unter .NET 6 zu verwenden, sofern man keine Crossplattform-Kompatiblität benötigt? Laufen tut es ja allem Anschein nach...

Wie ist das dann unter Linux / Mac, starte ich da dann auch einfach nur die Exe so wie unter Windows?

Damals konnte zumindest Mac ja nichts mit Exe anfangen...
 
Du musst das ganze schon für Mac kompilieren. Also entweder unter Windows irgendwie Cross-Compilen (habe ich noch nie gemacht, keine Ahnung ob das gut geht) oder auf einem Mac mindestens das SDK installieren und dann einmal mit "dotnet build" kompilieren.

Du kannst nicht einfach eine Binary für alle Plattformen nehmen.
 
Müsste es aber nicht vielmehr so sein, dass ich die .NET 6 Laufzeitumgebung z.B. unter MAC installiere und dann eben doch genau das möglich ist? So ist es zumindest mit JAVA...
 
Autokiller677 schrieb:
Ghost_Rider_R schrieb:
Wie funktioniert Java. Was ist ein Binary.

Ghost_Rider_R schrieb:
Damals konnte zumindest Mac ja nichts mit Exe anfangen...
Linux / OSX geben nicht viel auf das was am ende eines Dateinamens steht. Die schauen eher in die Datei und entscheiden anhand des Inhalts was das ist.

Als .Net entwickler musst du halt dein binary fuer OSX mit den dort verfuegbaren Bibliotheken bauen. (Hint: mono)
 
C# ist nicht JAVA. Die gleiche Binary einfach auf mehrere Systeme schmeißen geht nicht, zumindest nicht so ganz im Allgemeinen. Vielleicht gibts einen Workaround.

Du kannst wie hier gezeigt unter Windows relativ leicht eine andere Zielplattform angeben: https://stackoverflow.com/questions/38718370/cross-compile-dotnet-core-app-from-windows-to-linux
Da fallen dann bei mir auch .so's raus usw.

Unter Linux zumindest startet man Programme dann auch immer mit "dotnet Programm.dll" - ja, man führt tatsächlich eine DLL aus. Was auch immer die da zusammen gebaut haben.

Achso, und: Kein WinForms oder WPF. In Sachen GUI muss man immer noch Basteln. Gibt natürlich Xamarin, Avalon, UNO Plattform usw., aber ein richtiger "kann alles und läuft überall" Kandidat fehlt noch. Kommt vielleicht mit MAUI.

@madmax2010
Mono ist eine Portierung von NetFramework, das braucht man bei netCore und Net (ohne Framework) nicht mehr, das bietet MS direkt nativ für alle Plattformen an.
 
  • Gefällt mir
Reaktionen: Ghost_Rider_R
Ich dachte, das wäre jetzt alles unter (One) .NET 6 enthalten oder?
Hat sich erübrigt dank @Autokiller677

Wie sieht es hiermit aus?

Spricht sonst etwas dagegen eine .NET Framework Library unter .NET 6 zu verwenden, sofern man keine Crossplattform-Kompatiblität benötigt? Laufen tut es ja allem Anschein nach...
 
Solang es läuft, kann man es machen. Ich weiß nicht genau wie es ist, wenn diese Library Funktionen benutzt, die es in .Net6 nicht mehr gibt. Aber grundsätzlich spricht da nix gegen.
 
  • Gefällt mir
Reaktionen: Ghost_Rider_R
Zurück
Oben