Was ist der beste Weg, MasterPages projektübergreifend zu teilen?
-
09-06-2019 - |
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.
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.
- Teilen Sie Master -Seiten unter Anwendungen durch Einbettung in eine DLL
- Teilen von Masterseiten in Visual Studio
- ASP.Net 2.0 – Masterseiten:Tipps, Tricks und Fallen
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.