2010-12-08 8 views
2

Ich habe ein .DLL targetting .Net 4 erstellt, aber jetzt denke ich daran, es zu .Net 3.0 zu kompilieren, damit Leute, die Visual Studio 2008 benutzen, die DLL benutzen können.Gibt es einen Unterschied zwischen einem .DLL-Compiled für .Net 4 und .Net 3.0?

Gibt es einen Unterschied zwischen einem für .Net 4 und .Net 3.0 kompilierten .DLL?

Das heißt, sollte ich zwei DLLs erstellen (eine für jedes Framework), weil es besser ist, eine DLL zu verwenden, die mit dem Framework kompiliert wurde, auf das Sie zielen? oder soll ich nur eine kompilierte Version für .NET 3.0 anbieten und VS2010-Benutzern diese verwenden, da es keinen Unterschied gibt, eine DLL zu verwenden, die mit einem früheren Framework kompiliert wurde?

Danke,

Update: ich deutlicher gewesen sein sollte und „abgesehen von dem erforderlichen Rahmen, um“ hinzugefügt. Anders ausgedrückt: Gibt es einen Unterschied zwischen einem .NET 4-Projekt, das auf eine DLL verweist, die in .NET 3.0 kompiliert wurde, und einer in .NET 4 kompilierten DLL? Angenommen beide verwenden die .Net 3.0 Syntax, gewinnen/verlieren Sie irgendetwas, indem Sie eines verwenden?

Antwort

1

Wenn Ihre Assembly keine Funktionen speziell für 4.0 verwendet, ist es wahrscheinlich am einfachsten, nur eine 3.0-Version davon zu kompilieren und diese für beide zu verwenden. (Tatsächlich können Sie den ganzen Weg hinunter zur Version 2.0 gehen, wenn Ihr Code es erlaubt, da die Framework-Versionen 3.0 und 3.5 jeweils Supersätze von 2.0 sind)

Wenn Ihre Bibliothek jemals separaten Code für verschiedene Versionen hatte; Für maximale Flexibilität können Sie ein separates Projekt für die Versionen 3.0 und 4.0 erstellen und die gleichen Quelldateien "verlinken" anstatt separate Kopien zu haben. Sie würden Präprozessordirektiven verwenden, wenn Sie je Framework anders codieren müssen.

0

Gibt es einen Unterschied zwischen einem .DLL-Compiled für .Net 4 und .Net 3.0?

Ja, es gibt einen Unterschied. Wenn Sie eine Bibliothek für .NET 4.0 kompilieren, wird es mit mscorlib, v4.0.0.0 verknüpfen, und wenn .NET 4.0 auf dem Zielcomputer nicht installiert ist, wird es nicht funktionieren. Auf der anderen Seite, wenn Sie gegen .NET 3.5 kompilieren, wird es gegen mscorlib, v2.0.0.0 verknüpfen und es wird auf Maschinen arbeiten, die .NET 3.5 oder später installiert haben (vorausgesetzt natürlich, diese Bibliothek hat keine anderen speziellen Abhängigkeiten).

+0

Aktualisiert die Frage, um das Problem zu klären. – Manuel

Verwandte Themen