NuGet-Paket nicht kompatibel mit verwendetem Framework

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von kafffee.

    NuGet-Paket nicht kompatibel mit verwendetem Framework

    Hallo allerseits,

    ich hoff ich bin hier in dem richtigen Forum :)

    Folgendes Problem: Ich benutze für meine Anwendung .NET-Framework 4.6.1 und möchte ein NuGet-Paket installieren, das folgende Dependencies hat:

    .NET-Framework 5.0
    System.Text.Json (>= 5.0.0)
    .NET Standard 2.1
    System.Text.Json (>= 5.0.0)

    Kann ich mein Projekt so einfach konvertieren oder gibt das Probleme? Wenn ja, welcher Art? Ist das bei einem grösseren Projekt schaffbar?
    @kafffee Probier mal anders herum:
    Nuget-Pakete sind ZIP-Datzeien mit anderer Extension.
    Benenne sie in *.zip um und sieh Dir an, was da drinne steckt.
    Üblicherfweise haben die mehrere Frameworks und Nicht-Frameworks (CORE, NET) an Bord.
    Vielleicht findest Du da das richtige für Dich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mach nicht so'n Geheimnis drum, dann muss man auch nicht rätselraten.

    Hier die Projektseite: github.com/tof4/RadioBrowser
    Der freundliche Ersteller der Bibliothek mit dem Namen tof4 hat halt mit Net Standard angefangen und dann nach NET 5 migriert.
    Daran, dass auch für das veraltete .Net Framework anzubieten hatte er halt keine Lust.

    Ich habe mich versucht und sein Projekt samt Beispiel nach .Net Framework 4.8 portiert. Ich finde System.Text.JSON ja immer noch gruselig aber erst Recht hier.
    Wie schon oben gesagt, sind beim .Net Framework noch etliche weitere Abhängigkeiten vorhanden. Daher inds auch ein paar mehr DLLs die am Ende rauspurzeln.
    Bereinigte Projektmappe liegt bei.

    RadioBrowser00.zip

    Das Beispiel aus dem Original funktioniert in meiner Fälschung auch identisch.
    @Dksksm

    Erstmal danke für die Antwort.

    Cool, wie hast du das gemacht, also das portieren nach 4.8, wenn das NuGet Paket doch 5.0 braucht?

    Kanns net so ohne weiteres ausprobieren, hab momentan nur VS 2017 auf dem Rechner...

    Edit: Ah okay, du hast bestimmt die gezippte Projektdatei runtergeladen und dann halt das Zielframework geändert? Hab die Option jetzt auch gefunden... Kann ich das dann in meinem grossen Projekt verwenden, einfach indem ich die DLLs, die dann rauspurzeln, als Verweis zufüge und dann verwende, als hätte ich das NuGet-Paket installiert?
    Kann man VS 2017 und VS 2022 denn gleichzeitig auf einem Computer installiert haben? Kann man VS 2022 empfehlen oder steckt das noch zu sehr in den Kinderschuhen?
    Hatte mal VS 2019 drauf und habs dann wieder deinstalliert, weil beim Laden der Projekte oft ein Ausnahmefehler aufgetreten ist...

    Ich weiss, sind ne Menge Fragen :)

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „kafffee“ ()

    1. Ich habe das Projekt heruntergeladen, es kompiliert und "gestestet", also das "RadioBrowser.Example" ausgeführt.
    2. Einfach das Zielframework ändern geht so nicht, der Aufbau für .Net Framework unterscheidet sich zu sehr vom neuen .NET5 (oder auch schon Standard).
    3. Ich habe einfach 2 neue Projekte in der Projektmappe erstellt, nämlich die beiden "FX"-Projekte, jeweils von vornherein auf Zielframework .Net Framework 4.8
    dabei "RadioBrowserFX" als Klassenbibliothek und Example als Konsole, wie die originalen Vorlagen sind.
    4. Ich habe die 3 Verzeichnisse (Model, rnals und Api) sowie die einzelnen beiden C#-Dateien in das entsprechende Projekt kopiert und dann über NuGet System.Text.JSON installiert.
    5. Jetzt habe ich die Fehler aufgelöst, die sich aus dem Sprachefeature von C#8 (.NET 5) und C#7.3 ergeben. Das .NetFramework 4.8 unterstützt eben neuere Sprachfeatures nicht und wird es nie.
    6. "RadioBrowserFX" lauffähig übersetzt.
    7. Die Funktionen "Main" und "MainAsync" aus Program.cs ins neue FX.Example Projekt übernommen und dann getestet.
    8. Die jetzt überflüssigen Projekte (NET 5) aus der Projektmappe entfernt.
    9. Für als nächtliches Beispiel für gut genug befunden und hier hochgeladen.

    als Verweis zufüge und dann verwende, als hätte ich das NuGet-Paket installiert?

    Ja

    Kann man VS 2017 und VS 2022 denn gleichzeitig auf einem Computer installiert haben?

    Ja

    Kann man VS 2022 empfehlen oder steckt das noch zu sehr in den Kinderschuhen?

    Kommt wohl sehr auf den speziellen Einzelfall an.

    Hatte mal VS 2019 drauf

    Ich arbeite auf der Arbeit damit noch, Konzerne wechseln nicht gerne auf aktuelle Werkzeuge... Probleme hatte ich nie welche damit, weder auf der Arbeit, noch zu Hause.

    Was JSON angeht, so würde ich für alle .Net-Frameworks nicht (gerne) System.Text.JSON verwenden. Hier ist das Original von Newton einfach handzahmer.
    Trotzdem schön, das Microsoft es für das .Net Framwwork 4.8 rückportiert hat. Dadurch sind aber weitere Funktionen erforderlich, die in NET 5/6 enthalten sind, im .Net Frmework 4.8 aber "nachinstalliert" werden müssen.
    Schon kommt man auf 9 Programmbibliotheken, statt auf einer einzigen (Newtonsoft.JSON)

    Ich habe mich nicht für die Portierung nach Newtonsoft.JSON entschieden weil mir das zuviel arbeit war.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()

    @Dksksm

    Hey ich bins nochmal. Bin mal endlich dazu gekommen und hab mir VS 2022 runtergeladen. Möchte mir grade eine Konsolenanwendung mit dem RadioBrowser NuGet Package basteln, wenn ich aber ein neues Projekt erstellen will, dann zeigt er mir nur bis Framework 4.8 an, und wenn ich eine WPF-Anwendung erstellen will, steht sogar nur ausschliesslich 6.0 zur Verfügung. Weisst du zufällig wie ich .NET 5.0 installieren kann, ich bin eigentlich davon ausgegangen, dass das bei VS 2022 in der Standardinstallation von der Community Edition mit drin ist...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „kafffee“ ()

    Wenn du VS 2022 installiert hast, hast du automatisch .NET 6. Falls nicht kannst du im VS Installer sagen, dass du es nachträglich doch noch haben möchtest. Ich habe zum Test eben das NuGet Paket in eine .NET 6 Konsolenanwendung integriert. Kompilieren und starten lief ebenfalls - natürlich mit Testcode für den RadioBrowser.
    @ISliceUrPanties
    Ah cool dann probier ich das mal. Also dann den Workload "Plattformübergreifende .net-Core-Entwicklung" installieren hab ich recherchiert...


    Edit:

    ISliceUrPanties schrieb:

    Falls nicht kannst du im VS Installer sagen, dass du es nachträglich doch noch haben möchtest.


    Habs natürlich wieder mal nicht hinbekommen... :(

    Bei mir wird kein Workload "Plattformübergreifende .net-Core-Entwicklung" im Installer angezeigt... (s. Screenshot "screenshot workloads")

    Unter "Einzelne Komponenten" war ".NET 6.0 Runtime" schon angekreuzt, also hab ich ".NET 5.0 Runtime" auch noch angekreuzt... (s. Screenshot "screenshot komponenten")
    Ein SDK für 5.0 oder 6.0 habe ich vergeblich gesucht...

    Es erscheinen aber, wenn ich ein Konsolenprojekt anlegen will, wieder nur die Frameworks bis 4.8 ... auch nach einem Neustart des PCs...

    Welchen Workload, welche Komponente, muss ich also auswählen? Vielleicht etwas aus "screenshot core"?

    Screenshots hast du ja anbei

    Edit2:
    Ah jetzt ja, habs hinbekommen. Beim Projekt erstellen statt "Konsolen-App (.NET-Framework)" muss man nur "Konsolen-App" wählen. Dann erscheinen Framwork 5 und 6. Aber weisst du was der Unterschied zwischen beiden ist, das erschliesst sich mir nicht so ganz...?
    Bilder
    • screenshot komponenten.png

      172,15 kB, 2.560×1.080, 61 mal angesehen
    • screenshot workloads.png

      219,29 kB, 2.560×1.080, 47 mal angesehen
    • screenshot core.png

      151,22 kB, 2.560×1.080, 60 mal angesehen

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „kafffee“ ()

    Ja, wenn die Projekttypen die Sprache unterstützen, dann ist das kein Problem.

    Androidanwendungen (und IOS) können mit Xamarin Forms erstellt werden. VB wird darüber nur indirekt unterstützt; MS hat eine Anleitung, was zu tun ist, um VB zu verwenden.

    .NET MAUI wird dann der nächste große Meilenstein, was Platformübergreifende UIs angeht, aber die Unterstützung dort für VB darf eher angezweifelt werden.