.Net Core und .Net Standard - Projektaufbau für die Zukunft

  • Allgemein

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von 4typen.

    .Net Core und .Net Standard - Projektaufbau für die Zukunft

    Hallo Leute

    Leider ist mein Englisch echt nicht das beste (ich muss da echt mal was machen wenn ich mal den Kopf frei hab) weshalb ich viele Artikel von MS leider nicht ganz verstehe.

    Im September soll .Net Core Final erscheinen, die Preview gibts ja bereits auf GitHub - auch vom SDK, aber ich komm nicht ganz mit.
    Da ich gerade ein größeres Projekt aufbaue - aufbauen ist gut, ich habe schon einen Teil fertig - und ich natürlich nun gerne lieber früher als später daran denken möchte das ich, wenn es denn soweit ist zu .Net Core migrieren möchte, ich dies auch kann dachte ich mir ich Frage hier mal nach ob jemand schon was mitbekommen hat.

    Meine Ausgangssituation:

    Ich habe eine WPF Applikation welche im Grunde als Container gilt (hat nur ein Window und einen Serviceinjector)
    Weiters habe ich mehrere Assemblys mit WPF UserControls (ist zwar eine dll, referenziert aber die selben Assembly wie eine WPF Anwendung)
    Und dann gibt es noch ein paar Projekte welche normale .Net 4.6.2 Klassenbibliotheken (z.b. das ViewModel) sind und einige .Net Standard 2.0 Klassenbibliotheken wie z.b. das Model, die Businesslogik, der DataAccessLayer, Helper usw.
    Ein paar Bibliotheken binden auch NuGet Pakete ein. Auch Pakete mit WPF Controls sind dabei welche also nicht .Net Standard kompatibel sind sondern eben nur mit .Net Full Framework funktionieren.

    Jetzt stellt sich mir die Frage. Könnte man solch ein Projekt dann auf .Net Core Migrieren?
    Kann man in einer .Net Core WPF Anwendung einen Verweis auf eine .Net Standard und eine .Net 4.6.2 Library Verweisen?

    Und zu guter letzt. Wenn ich z.b. das ViewModel (welches ja jetzt in .Net 4.6.2 ist) zu .Net Core 3.0 migrieren könnte, kann ich dann die UnitTest-Projekte auch zu .Net Core 3.0 migrieren, oder gibt es da für UnitTest-Projekte keinen Unterschied?

    Im vorfeld schon mal vielen Dank fürs grübeln.
    Grüße
    Sascha

    *Topic verschoben*
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Also so weit ich das im Moment verstanden habe bietet .Net Standard eine Basis bzw. ein "Feature Set" an Funktionen und kann sowohl in .Net Core als auch .Net FW referenziert werden, sofern die Versionen passen.
    Hier gibt es eine nette Tabelle: .NET-Standard - Unterstützung der .NET-Implementierung

    Beispiel:
    Du erstellst eine Library mit deinem ViewModel mit dem Ziel .Net Standard 1.4, dann kann diese Library in .Net Core Projekten ab Version 1.0 und .Net FW ab Version 4.6.1 benutzt werden.


    Auch interessant: .NET Standard: Entmystifizierung von .NET Core und .NET Standard
    Ist aber leider von 2017 und das Schaubild passt meiner Meinung nach nicht ganz.

    Kurz gesagt (so sehe ich die aktuelle .Net Welt):
    .Net FW: Alles mit GUI Referenz (WPF, WinForms) oder CLI
    .Net Core: CLI & ASP.Net Core (ich meine irgendwo gelesen zu haben das WPF irgendwann mal wohl auch zur Verfügung stehen soll)
    .Net Standard: Libraries (Connectoren, Datenstrukturen, Helper und was weiß der Teufel noch, was keine GUI hat)
    Hallo @slice

    Danke für die Tabelle, die ist gut.

    slice schrieb:

    Du erstellst eine Library mit deinem ViewModel mit dem Ziel .Net Standard 1.4, dann kann diese Library in .Net Core Projekten ab Version 1.0 und .Net FW ab Version 4.6.1 benutzt werden.

    Das ist interessant, ich dacht enämlich nicht das ich mein ViewModel in .Net Framework 4.6.2 belassen könnte. Ich möchte nämlich echt nicht auf den CommandManager verzichten und den gibt es in .Net Standard nicht. :/

    Das wäre dann ja gar nicht so viel umzubauen.
    Lediglich die UnitTests werde ich vermutlich komplett migrierenmüssen, aber gut, das ist ja nicht sooo viel.

    Besten Dank und Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Dksksm Danke, das es so ne Seite gibt konnte ich mir denken, hätte mich damit erst beschäftigt wenn das Release fertig ist, aber freut mich, nur schade das es immer noch ausschließlich für Windows ist :(

    @Nofear23m Ok, das ViewModel als Library in .Net Standard war jetzt eventuell nicht das beste Beispiel, hab das nie ausprobiert (Eventing etc.), aber zumindest so generische Sachen wie eben Connectoren, Models, Helper (ohne GUI Bezug) solltest du ohne Probleme in .Net Standard umsetzten können.
    @slice Mir gings um diese Aussage:

    slice schrieb:


    .Net Core: CLI & ASP.Net Core (ich meine irgendwo gelesen zu haben das WPF irgendwann mal wohl auch zur Verfügung stehen soll)


    Die Antwort dazu aus der verlinkten Seite:
    .NET Core 3.0 unterstützt die Windows-Desktopanwendungen mit Windows Presentation Foundation (WPF) und Windows Forms. Diese
    Frameworks unterstützt auch die Verwendung moderner Steuerelemente und
    des Fluent-Stils aus der Windows-UI-XAML-Bibliothek (WinUI) über XAML-Inseln.
    Microsoft will 2020. NET Core und. NET Framework mit. NET 5 vereinen.

    microsoft.com/de-de/techwiese/…von-net-heisst-net-5.aspx

    Nach der angekündigung habe ich mich dagegen entschieden von. NET Framework auf. NET core zu migrieren
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!

    slice schrieb:

    Ok, das ViewModel als Library in .Net Standard war jetzt eventuell nicht das beste Beispiel

    Verstehe aber was du meinst. Aber ich verstehe das schon richtig das wenn ich die WPF Anwendung und die Klassenbibliothek in .Net Core 3.0 habe dann könnte ich diesen .Net Core Projekten dann trotzdem einen Verweis auf ein ViewModel welches unter .Net 4.6 oder .Net 4.7 erstellt wurde haben oder? Genauso wie z.b. Fremdkomponenten wie z.b. DevExpress richtig?

    Dksksm schrieb:

    .NET Core 3.0 unterstützt die Windows-Desktopanwendungen mit Windows Presentation Foundation (WPF) und Windows Forms.

    Leider aber bisher ohne WPF Designerunterstützung soweit ich weis. Da muss ich nocht warten, sonst hätte ich schon umgestellt, vorallem weil mich die Preview von EF Core 3.0 welches auch bereits in der Preview 6 vorliegt (hat ja glaube ich seit neuestem den selben Releaszyklus) interessiert.

    BornToBeRoot schrieb:

    Nach der angekündigung habe ich mich dagegen entschieden von. NET Framework auf. NET core zu migrieren

    Wobei ich denke - wenn ich das richtig verstanden habe - das .Net 5 ja auf .Net Core aufsetzt, somit ändert sich ja nicht wirklich etwas. Oder?

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nofear23m schrieb:


    Wobei ich denke - wenn ich das richtig verstanden habe - das .Net 5 ja auf .Net Core aufsetzt, somit ändert sich ja nicht wirklich etwas. Oder?


    .Net 5 wird der Nachfolger von .Net Core 3.0 heissen. Das sind also nur Namensspielerein. Das heutige .Net Framework wird mit seinen APIs dann mehr oder weniger vollständig in .Net 5 migriert worden sein. So zumindest lautet die Publikation und alle was ich an "Nachschreibereien" gefunden habe.
    Hinter .NET 5 befindet sich ein kleines bisschen mehr als nur eine Namensspielerei:
    Sammelthread "IT-News"

    Darüber hinaus wird auch noch .NET Core 3.1 ungefähr November diesen Jahres (also März 2020 :P ) erscheinen.

    Meiner Meinung nach wird .NET Standard ab .NET 5 verschwinden (zumindest für uns Entwickler), da Mono, Xamarin (basierend auf Mono), und die CoreCLR bzw. CoreFX, also alle relevanten Implementationen des .NET Frameworks, inzwischen fast komplett in der Hand von Microsoft liegen und somit sicherstellen können, dass alle dieselben APIs veröffentlichen. Was dann auch die Auswahl der Runtime bzw. des Compilers per Häkchen in den Projekteinstellungen ermöglichen wird.
    Schön wäre es Microsoft würde sich nun noch an "XAML 2" setzen, damit endlich die GUI Sprache in der .NET Welt wirklich konsistent wäre. XAML Standard ist leider ein sehr schlechter Witz gewesen.

    Und hier noch ein Workaround für das .NET Core WPF Designer Problem. Es ist jedoch ziemlich ausdrücklich VS 2019 Prof. bzw. Enterprise angegeben:
    github.com/yanglr/.netCore-WPF…ner/blob/master/README.md

    Nofear23m schrieb:

    Verstehe aber was du meinst. Aber ich verstehe das schon richtig das wenn ich die WPF Anwendung und die Klassenbibliothek in .Net Core 3.0 habe dann könnte ich diesen .Net Core Projekten dann trotzdem einen Verweis auf ein ViewModel welches unter .Net 4.6 oder .Net 4.7 erstellt wurde haben oder? Genauso wie z.b. Fremdkomponenten wie z.b. DevExpress richtig?

    So weit ich das verstanden habe geht das nicht. Die Library muss mit ".Net Standart" erstellt worden sein um sie in .Net FW und .Net Core benutzen zu können, umgekehrt sind die glaube ich nicht kompatibel.

    Edit: Wobei sich meine Aussage auf .Net Core kleiner Version 3 bezieht, mit der habe ich mich noch nicht beschäftigt.

    slice schrieb:

    So weit ich das verstanden habe geht das nicht. Die Library muss mit ".Net Standart" erstellt worden sein um sie in .Net FW und .Net Core benutzen zu können


    Genau das war meine befüchtung. Und da es in .Net Standard keinen CommandMAnager gibt müsste ich jedes Command im ViewModel überarbeiten. Aber gut. Reine Fingerübung. Naja, ich warte mal auf jeden Fall auf das erste Stable Release und dann muss ich eben Migrieren. Wird zwar ein paar Wochen dauern aber mein Gott, wat muss dat muss.

    Vielen Dank für die Antworten und schöne Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    slice schrieb:

    So weit ich das verstanden habe geht das nicht.

    Ist korrekt. .Net Core ist ja quasi eine kompaktere Version des .Net Frameworks die sich auf das Wesentliche konzentriert. Wenn die Hauptanwendung auf .Net Core kompiliert wird, kann der Compiler natürlich nichts mit dem spezifischen .Net Framework Geraffel anfangen. Daher würde ich UI-Unspezifische Logik in .NET Standard-Pakete packen.

    Microsoft räumt gefühlt eh gerade mächtig in ihren Technologien auf und führt gerade vieles zusammen bzw. lässt mittelfristig den Support für den alten Krempel auslaufen. Soweit ich weiß wird es ein großer Spaß, gerade in Enterprise Anwendungen, auf .Net 5.0 zu wechseln, da es meines Wissens nach nicht in allen Belangen kompatibel zum aktuellen .Net FW 4.x sein wird. Mehr wissen wir da sicher erst wenn es soweit ist.

    Grüße