Ich habe eine Anwendung, die mehrere .Net-Dlls nutzt. Macht es was wenn die Anwendung als Target Framework .NET Framework 3.5 Client Profile hat und die DLLs "nur" .NET Framework 3.5 (also ohne Client Profile)?
Darf ich von einer Anwendung, die das Target Framework .NET Framework 3.5 Client Profile hat auch DLLs nutzen, die z. B. das Target Framework .NET Framework 2.0 bzw. 3.0 haben? Sind solche Mischformen erlaubt - oder sollte man dies vermeiden?
Erlaubt?
Du unterliegst da wohl einem Missverständnis.
Hier geht es nicht darum ob irgendetwas erlaubt ist.
Wenn nur das Clientprofile installiert ist, geht schlichtweg keine Assembly die eine DLL
benutzt die nur im grossen drin ist.
Und das wird dir immer dann passieren, wenn du UI Elemente mit Designern hast, die nicht in extra designer DLL's implementiert sind.
Mir ist klar, dass das Client Profile ein abgespecktes .Net Framework ist und wenn nur eine Client Profile installiert ist, das vollständige .Net Framework nicht verwendet werden kann.
Mein Frage ist kann man wenn alles entsprechend installiert ist z. B. von einer .Net 3.5 Client Profile einfach so auf eine DLL zugreifen, die als Target Plattform das .Net 2.0 Framework hat - ist also das mischen verschiedener DLLs und EXE Dateien mit unterschiedlichen Target Plattformen erlaubt? Mir ist schon klar, dass man so etwas vermeiden sollte, jedoch gibt es halt alte .Net 2.0 Komponenten, die irgendwas verwenden, was z. B. im .Net 3.5 Client Profile fehlt und einer Portierung aus Zeit/Kostengründen nicht sinnvoll.
Also: Ist das mischen erlaubt?
Und das wird dir immer dann passieren, wenn du UI Elemente mit Designern hast, die nicht in extra designer DLL's implementiert sind.
Genau einen solchen Fall habe ich. Die grafische GUI Komponente lässt sich mit Target Platform .Net 2.0 übersetzen.
Die Grafische Komponente wird in einer Anwendung verwendet, die Target Platfom .Net 3.5 Client Profile hat.
Das funktioniert zumindest auf meinem Rechner ohne Probleme. Meine Frage ist deshalb ob sowas generell erlaubt ist bzw. gewöhnlich ist oder ob man sowas nie in den produktiven Einsatz gehen lassen sollte
Es ist vollkommen egal ob diese DLL das FW 2 referenziert, denn FW 3.5 basiert auf der CLR 2, hat nur zusätzliche DLL's.
Erst beim FW 4 ist das kompett anders.
Ruft diese "alte" DLL eine Funktion/Assembly auf, die nicht installiert ist ( weil nur im grossen FW ) bekommst Du eine Exception.