Frage

Angenommen, Sie haben zwei separate ASP.NET-Webanwendungsprojekte, die beide eine gemeinsame MasterPage verwenden müssen.

Was ist der beste Weg, die MasterPage projektübergreifend zu teilen, ohne Code duplizieren zu müssen?Am besten ohne auf Quellcodeverwaltung oder Dateisystem-Hacks zurückgreifen zu müssen.

War es hilfreich?

Lösung

Ich habe versucht, das Gleiche zu erreichen.Ich schaue mir einige Lösungen an, denke aber, dass die Verwendung eines virtuellen Verzeichnisses wahrscheinlich die beste Möglichkeit ist, Masterseiten freizugeben.

Hier sind ein paar Quellen, die Sie sich ansehen können.

In den dritten Aufzählungspunkten am Ende des Artikels erfahren Sie, wie Sie auch Masterseiten teilen können.

Andere Tipps

Von K.Scott Allens ASP.Net-Masterseiten:Tipps, Tricks und Fallen Artikel zum Thema „Teilen von Masterseiten“:

Die erste Alternative besteht darin, freigegebene Masterseitendateien in einen einzelnen Speicherort auf einem IIS -Webserver zu kopieren.Jede Anwendung kann dann ein virtuelles Verzeichnis als Unterverzeichnis erstellen und das virtuelle Verzeichnis auf das reale Verzeichnis von Master -Seiten richten.Die Anwendungen können dann die Eigenschaft masterpageFile einer Seite auf den Namen des virtuellen Verzeichnisses sowie den Namen der Mastersteindatei festlegen.Wenn wir eine aktualisierte Master -Datei in das reale Verzeichnis fallen lassen, wird die neue Master -Seite sofort in allen Anwendungen angezeigt.

Ein zweiter Ansatz besteht darin, ein Versionskontrollsystem zu verwenden, um eine Reihe von Masterseitendateien über mehrere Projekte hinweg zu teilen.Die meisten Quellensteuerung / Versionskontrollsysteme unterstützen eine gewisse Stufe der „Freigabe“ -Funktionalität, wobei eine Datei oder ein Ordner in mehr als einem Projekt angezeigt werden kann.Wenn ein Entwickler in einer aktualisierten Master -Datei überprüft, werden die anderen Projekte sofort angezeigt (obwohl dieses Verhalten im Allgemeinen konfigurierbar ist).In Produktion und Test müsste jede Anwendung neu eingesetzt werden, damit die Update -Master -Seite angezeigt wird.

Schließlich kann der VirtualPathProvider in ASP.NET 2.0 Dateien bereitstellen, die nicht im Dateisystem vorhanden sind.Mit dem VirtualPathProvider könnte eine Reihe von Master -Seiten in Datenbanktabellen leben, die alle Anwendungen verwenden.Einen hervorragenden Artikel zum VirutalPathProvider finden Sie unter „Virtualisierung des Zugriffs auf Inhalte:Bereitstellung Ihrer Website aus einer ZIP-Datei”.

Behalten Sie eine primäre Kopie in der Quellcodeverwaltung und überlassen Sie dies Ihrem Quellcodeverwaltungssystem.

Angenommen, Sie können ein gemeinsames Repository für alle Ihre Projekte erstellen (z. B. einen gemeinsamen Ordner in Ihrem Quellcodeverwaltungsbaum), könnten Sie die Masterseiten mithilfe relativer Pfade als Links hinzufügen.

Allerdings erstellt IIRC, Visual Studio lokale Kopien von Dateien, die von externen Pfaden hinzugefügt wurden.Möglicherweise müssen Sie die Lösungs-/Projektdatei per Text bearbeiten, um die verknüpften Dateien hinzuzufügen.

Dies setzt natürlich voraus, dass Sie das Format „Webanwendung“ verwenden.Ältere VS-„Websites“ verfügen über keine Projektdateien und sind darauf angewiesen, dass sich alle Dateien im Site-Ordner befinden.

AFAIK, es gibt keine elegante Möglichkeit, das zu tun, was Sie suchen.VS wird es am Ende immer kopieren.

Ich denke, um ehrlich zu sein, dass es vielleicht keine gute Idee ist.Offensichtlich möchten Sie den niedrigsten gemeinsamen Code, aber eine ganze MasterPage teilen?Klingt so, als ob Sie Probleme haben könnten, da eine kleine Änderung große Auswirkungen auf eine oder mehrere Anwendungen haben könnte.

Ich würde stattdessen vorschlagen, die guten Funktionalitäten in Komponenten/Steuerelemente aufzuteilen und diese bereitzustellen.

Ich kann nicht verstehen, warum Sie in verschiedenen Projekten das gleiche Markup haben möchten. Wenn ja, kenne ich keinen einfachen Weg.

Allerdings können Sie mit Code natürlich eine Codedatei schreiben, von der er erbt

System.Web.UI.MasterPage

Fügen Sie dort in alle Ihre Masterseiten die gewünschte Logik ein.Erstellen Sie es als Ihre fantastische DLL und fügen Sie sie dann einfach in Ihre Projekte ein.

Verwenden ein symbolischer Link:

Ein symbolischer Link ist ein Dateisystemobjekt, das auf ein anderes Dateisystemobjekt verweist.Das Objekt, auf das gezeigt wird, wird Ziel genannt.Symbolische Links sind für Benutzer transparent;Die Links werden als normale Dateien oder Verzeichnisse angezeigt und können vom Benutzer oder der Anwendung genau auf die gleiche Weise bearbeitet werden.

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