Best Practice würde vorschlagen, Sie dies nicht tun.
Jede Anwendung ist anders, behandeln Sie sie als solche. Durch das Teilen von Ressourcen erstellen Sie eine implizite Abhängigkeit zwischen den Projekten - wenn Sie eine freigegebene Ressource ändern, ändern Sie sie für alle - unabhängig davon, ob sie beabsichtigt war oder nicht.
Wenn Sie wirklich Ressourcen teilen müssen, tun Sie es auf der Ebene der Versionskontrolle oder Builds - es ist viel einfacher, die Abhängigkeit auf dieser Ebene zu brechen, als die Abhängigkeit zu brechen, sobald Sie es auf einem Produktionsserver bereitgestellt haben.
Xanadont, mit gemeinsamen Bibliotheken usw. ist in Ordnung (das ist im Wesentlichen, was Open-Source-Projekte wie nHibernate tun), aber diesen Server auf einer Produktion von Bin-Sharing-Ordner auf der Ebene tun schafft mehr Probleme als sie löst . Die Art der Wiederverwendung, über die Sie sprechen, wird am besten angegangen, indem Sie gemeinsam genutzte Bibliotheken erstellen, bei denen es sich um unabhängige Projekte innerhalb der Quellcodeverwaltung handelt, bei denen Binärversionen verwaltet werden. Projekte, die die gemeinsam genutzten Bibliotheken verwenden möchten, verwenden dann eine binäre Abhängigkeit in der gemeinsam genutzten Bibliothek, indem sie die Binärdatei in den lib-Ordner des Quellbaums der Lösung kopieren und auf diese Binärdatei verweisen. Auf diese Weise können die gemeinsam genutzten Bibliotheken beibehalten und aktualisiert werden, ohne dass direkte Abhängigkeiten auftreten. Lösungen, die die Bibliotheken verwenden, können die Fixes/Updates auswerten, um zu ermitteln, wie sie sich auf den von ihnen abhängigen Code und auf das Upgrade auswirken ist es wert.
Scott, was Sie sich beziehen ist 1 Anwendung mit Variationen in der View-Schicht (Templates), nicht mehr als 50 Anwendungen mit Variationen in der Business-Logik. Der beste Ansatz für diese Art von Anwendung ist Multi-Tenant (ich nehme an, Sie haben 1 Datenbank pro Stadt) und verwenden die URL, um einen Kontext zu definieren, von dem aus Sie auf Ihre Datenbank zugreifen und Ihre Ansichtspfade auflösen können (schwer zu beschreiben) ein besserer Ansatz, ohne Ihre Anwendungsarchitektur besser zu verstehen).
Das Ändern von Ansichten basierend auf der URL könnte durch Implementieren einer kontextsensitiven Ansichts-Engine erfolgen (siehe http://www.coderjournal.com/2009/05/creating-your-first-mvc-viewengine/ für ein Beispiel, wie dies zu tun ist).
Mit dieser Art von Ansatz haben Sie nur einen Standort, den Sie mit Fixes aktualisieren müssen, aber Sie können einfach eine neue "Site" für eine andere Stadt erstellen, indem Sie einen neuen Satz von Vorlagen hinzufügen und (je nachdem, wie Sie Stellen Sie das Routing ein, um die neue Domain auf Ihrer Site zu platzieren. Wenn Sie über eine Reihe von Standardvorlagen verfügen, kann Ihre View-Engine sogar auf diese zurückgreifen, wenn keine Anpassungen vorhanden sind. Daher können Sie eine neue Website einrichten, indem Sie einfach auf eine neue Domäne in Ihrer Anwendung verweisen.
Bitte stellen Sie nicht dieselbe Frage erneut, nur weil Sie nicht die gewünschte Antwort erhalten haben: http://stackoverflow.com/questions/1155655/asp-net-deployment-how-to-share-bin- über mehrere Webapp-Projekte hinweg. –