Warum schlägt das Hinzufügen eines Verweises auf das .NET .NET Framework 4.0 fehl?

8

Wir haben zwei Projekte, die beide Klassenbibliotheken sind. Projekt 1 ist ein VS 2008-Projekt und zielt auf das .NET Framework 3.5 ab. Projekt 2 ist ein VS 2010-Projekt (Release Candidate), das auf .NET Framework 4.0 abzielt. Wenn ich versuche, einen Verweis auf Projekt 2 in Projekt 1 hinzuzufügen, schlägt es mit einer weniger als informativen Fehlermeldung fehl. Ich weiß, dass das Hinzufügen des Verweises funktioniert, wenn ich das Ziel-Framework für Project 2 auf 3.5 ändere. Meine Frage ist, wenn ich die Zielframeworks nicht ändere, aber Project 1 in VS 2010 umwandele, funktioniert das Referenzieren? Anders ausgedrückt: Gibt es eine inhärente Inkompatibilität zwischen Klassenbibliotheken, die auf unterschiedliche Framework-Versionen abzielen, oder schlägt sie fehl, weil VS 2008 nichts über das Framework 4.0 weiß?

    
Malcolm Post 01.04.2010, 03:34
quelle

3 Antworten

7

Ja, es ist ein Problem. Ähnlich wie Sie keine Referenz zu einer .NET 2.0-Assembly aus einem .NET 1.0- oder 1.1-Projekt hinzufügen können. Die .NET 4.0 ist eine neue Laufzeit Version des Frameworks (CLR). Die Versionen .NET 3.5 und 3.0 verwenden beide die Version 2.0 Laufzeit des Frameworks (CLR).

Sie können einer Assembly mit einer älteren Laufzeit immer einen Verweis von einer Assembly hinzufügen, die mit einer neueren Laufzeit erstellt wurde, aber nicht umgekehrt.

Von .NET 2.0 (3.0 und 3.5):
* Kann .NET 2.0 (3.0 und 3.5) Assemblies referenzieren * Kann .NET 4.0-Assemblies nicht referenzieren

Von .NET 4.0:
* Kann .NET 4.0-Baugruppen referenzieren * Kann .NET 2.0 (3.0 und 3.5) Assemblies referenzieren

    
Adam Sills 01.04.2010, 03:42
quelle
2

Framework-Versionen 2, 3.0, 3.5 werden auf CLR Version 2 ausgeführt, während Framework Version 4 auf CLR Version 4 ausgeführt wird: Die CLR Version 2 würde keine Assembly laden, die CLR 4 erfordert, also versucht Visual Studio (schlecht, Es klingt wie) dir das zu sagen. Um Ihre Frage zu beantworten, ja, wenn Sie Ihr Projekt 1 auf VS 2010 aktualisieren und das Zielframework auf Version 4 ändern (dies geschieht standardmäßig für C ++ - Projekte, nicht jedoch für C # / VB.NET), wird es möglich sein auf Projekt 2 verweisen.

    
Simon Buchan 01.04.2010 03:42
quelle
0

Wenn Sie eine Assembly verwenden möchten, die auf .net framework 4 ausgerichtet ist, die auf .net framework 3.5 ausgerichtet ist, können Sie die Assembly (.net framework 4) über COM exportieren und in die Assembly .net framework 3.5 importieren.

Entschuldigung für mein schlechtes Englisch.

    
Adam Sierosławski 14.04.2012 21:51
quelle