Frage

Stellen wir uns vor, ich habe bereits ein Projektgebäude .NET 3.5 Assembly. Jetzt möchte ich diese Versammlung für Silverlight bauen und außerdem seine Silverlight -Version mit minimalen Anstrengungen weiter beibehalten.

Was ist nicht akzeptabel:

  • Erstellen Sie ein separates Projekt für Silverlight Build

Was ist akzeptabel:

  • Hinzufügen von benutzerdefinierten Direktiven, mit denen ich entweder Silverlight oder .NET abhängig von z. B. MSBUILD -Eigenschaften abzielen kann.
  • Hinzufügen von speziellen Build -Konfigurationen für Silverlight
  • Hinzufügen von #ifdef Silverlight / #endif -Abschnitten zum Quellcode.
  • Im Allgemeinen jede andere Änderung von .csproj / .cs.

Im Grunde möchte ich ein einzelnes Projekt beibehalten, aber zwei Frameworks zielen. Ich möchte nicht zwei getrennte Projekte beibehalten, da dies zu Fehlern wie dem Vergessen führen kann, eine neue Datei einzuschließen. Wenn es viele Projekte und ein großes Team gibt, ist dies wirklich wichtig, um solche Fehler auszuschließen.

Wenn dies völlig unmöglich ist, ist jede Lösung, die ähnliche Vorteile liefert, akzeptabel.

War es hilfreich?

Lösung

Haben Sie auch ausgeschlossen, mit den Dateien in Ihrem Projekt aus einem Silverlight -Projekt verknüpft zu werden? Dies ist ein ziemlich häufiger Ansatz, um eine Implementierung zwischen Silverlight und dem vollständigen CLR zu teilen. Code zwischen .NET und Silverlight -Plattformen teilen

Laut Justin Angel können Sie eine Silverlight Class Library aus der vollständigen CLR verweisen und verwenden. Ich habe das selbst nicht ausprobiert, und es hinterlässt einige Fragen unbeantwortet, aber es macht das Szenario einfach: http://silverlight.net/blogs/justinangel/archive/2008/12/29/using-silverlight-dlls-on-the-desktop.aspx

Andere Tipps

Ich stimme Scott zu. Sparen Sie sich viel Schmerz. Zwei Projekte, die dieselbe Codebasis teilen, ist der richtige Weg. Sie benötigen es, um Vstudio in beiden Umgebungen zu verwenden, verschiedene LIBs zu verwenden, Dateien einzuschließen/zu entschuldigen, so viele Dinge zu tun ... einfach!

Der Grund für zwei Projekte weit übergewichtige Ausreden für eine.

Das MSDN enthält detaillierte Informationen zu Plattform-Multitzargeting:Multi-Targeting auf MSDN

Ich denke, Sie müssen dies richtig herausstellen. Ihr Silverlight -Code sollte nur für die Benutzeroberfläche und die Kommunikation mit Backend -WCF -Diensten erfolgen. Diese Dienste würden Ihren .NET 3.5 -Code ausführen (den Code, den Sie teilen möchten). Auf diese Weise haben Sie auch teilen und n-Tier.

Wenn Sie in Ihrem Silverlight-Code eine starke Berechnung auf der clientseitigen Berechnung durchführen und dies dann an den Server (und wahrscheinlich die DB) senden, dann öffnen Sie ein Sicherheitsloch.

Sie haben keinen überzeugenden Grund angegeben, warum ein separates Projekt im Silverlight -Projekt auf Code zugreifen muss.

Sie müssen zwei Projekte haben, da die MSCORLIB -Referenzen für die beiden Plattformen unterschiedlich sind.

Schauen Sie sich diese Frage an: http://www.google.ca/search?hl=en&q=targinging+Silverlight+and+WPF&meta=&aq=f&oq=

Wenn Sie nur eine regelmäßige alte .NET -Bibliothek haben möchten, die zwischen den beiden geteilt wird, schlage ich vor, zwei Projekte (eine für Silverlight, eine für reguläre) und die gleichen Dateien in beiden Projekten zu erstellen. Dies ist für andere Entwickler viel einfacher zu verstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top