BC31091 Fehler beim Importieren

  • VB.NET

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

    BC31091 Fehler beim Importieren

    Hallo und schöne Ostern euch allen :)

    Ich hab ein kleines Problem:

    Mein Hauptprojekt ist Framework 4.6.1

    Nun möchte ich ein NuGet-Paket benutzen, das für Framework 5.0 gebaut ist.

    Also hab ich mir eine DLL in .NET 6.0 gebastelt, die das NuGet-Paket benutzt und die ich dann ins Hauptprojekt einbauen möchte und bekomme dabei den Fehler:

    BC31091 Fehler beim Importieren des Typs "Task" aus der Assembly oder dem Modul System.Runtime.dll

    Jetzt meine Frage:

    Kommt das daher, dass generell in .NET 6.0 gebaute DLLs nicht in 4.6.1 Projekte eingebaut werden können?

    Oder liegt es daran, dass mein NuGet-Paket für 5.0 geschrieben ist und ich es in ein DLL-Projekt mit 6.0 eingebaut hab, also nicht abwärtskompatibel ist?

    Oder ist es was gänzlich anderes?

    Die Microsoft Docs sagen nur, dass man sich vergewissern soll, dass alle miteinander kompatibel sein sollen...

    Freue mich auf Eure Antworten :)
    @kafffee Framework x ist inkompatibel zu .NET y.
    Framework 5.z gibt es nicht, das ist .NET 5.
    Für Framework x gilt folgendes:
    Das Framework einer Exe ist größer-gleich dem Framework einer ladbaren DLL.
    Bei .NET dürfte die Version gleich sein müssen.
    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!

    RodFromGermany schrieb:

    Framework x ist inkompatibel zu .NET y.
    Framework 5.z gibt es nicht, das ist .NET 5.

    Bin neu in VS 2022, mich verwirrt das Ganze ein bisschen, hab bisher mit 2017 gearbeitet und mir extra für diesen Zweck 2022 runtergeladen. Wusste nicht dass es einen Unterschied zwischen Framework und .NET-Framework gibt... Da gibts auf einmal so viele neue Optionen...

    Also nochmal im Detail:
    Hauptprojekt: .NET Framework 4.6.1 (fix)
    NuGetPaket: net5.0 (genauso stehts da, ist vielleicht etwas schlampig dokumentiert...) (fix)
    Meine DLL: .NET 6.0

    Beim erstellen des DLL-Projekts gibt es zwei Optionen:
    (1) Klassenbibliothek
    (2) Klassenbibliothek (.NET Framework)

    Siehst du eine Möglichkeit, das zum Laufen zu bringen, oder muss ich mir was anderes einfallen lassen?

    Ich dachte daran, mir statt der DLL eine Konsolenapp zu schreiben, und diese dann im Hauptprojekt unsichtbar aufzurufen mit Process.WaitForExit. Alles was die DLL tun muss ist einen String zurückzugeben (diesen hätte ich dann einfach in eine Textdatei geschrieben...

    kafffee schrieb:

    .NET-Framework
    gibt es nicht.
    Der Begriff Framework ist zuordenbar bis zu einer Version 4.8.
    Darüber gibt es nur noch .NET.
    Wenn Dein Hauptprojekt: .NET Framework 4.6.1 ist, nimm die (2) Klassenbibliothek (.NET Framework) und es sollte laufen, es sei denn, die Framework-DLL ist für eine höhere als Version 4.6.1 erstellt.
    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!