Zum Inhalt

.Net Framework übergreifend entwickeln mit Portable Class Libraries

Mittlerweile gibt es neben dem .Net Framework 4 auch Silverlight, Windows Phone 7 und Xbox 360. Obwohl man überall in C# entwickeln kann stösst man doch schnell einmal an eine Grenze: Eine Klassenbibliothek vom vollen .Net Framework kann nicht in einem Silverlight-Projekt verwendet werden. Gleiches gilt für Windows Phone 7. Und um es noch ein wenig mühsamer zu machen sind Silverlight und Windows Phone 7 auch nicht kompatibel.

Dies zeigt sich mit dieser Fehlermeldung wenn man versucht eine *.dll einzubinden:

"Fehler wenn eine ClassLibrary aus .Net in Silverlight verwendet werden soll."

Portable Library Tools als Lösung

Eine Entdeckung der Tech Conference war für mich die Portable Class Libraries. Dieser Projekt-Typ ist vergleichbar mit einer gewöhnlichen Class Library. Allerdings kann man mehrere Framework-Plattformen als Ziel wählen.

Die einzelnen Frameworks haben eine grosse Menge an Funktionen die überall zur Verfügung stehen. So lange man in diesem Bereich bleibt ist dieser Projekttyp eine sehr gute Lösung um den Code nur einmal zu schreiben. Was genau geht und wo die Grenzen liegen ist in der MSDN gut beschrieben.

Benötigt man die Framework-Spezifischen Teile kann man immer noch mehrere Projekte machen und die *.cs Dateien verlinken.

Installation

Wie immer mehr Bibliotheken und Erweiterungen kann man die Erweiterung Portable Library Tools über NuGet installieren. Sobald dies gemacht ist gibt es eine neue Projektvorlage:

"Neue Projektvorlage"

Über die Projekteigenschaften kann man die Zielframeworks sehr einfach auswählen:

"Auswahldialog für Target Frameworks"

Der wiederverwendbare Code kann nun in diesem Projekt entwickelt werden und steht Anwendungen der aktivierten Frameworks zur Verfügung.

Ausblick

Windows 8 wird mit Metro noch ein weiteres Framework in die .Net Welt bringen. Gemäss den Informationen aus der Tech Conference von Mitte März in Baden gibt es aber eine gute Nachricht: Visual Studio 11 (oder wie man die Version am Ende nennt) wird diesen Projekttyp bereits integriert haben. Eine Nachinstallation wird so nicht nötig sein und damit auch den Anwendern der Express-Edition zur Verfügung stehen.