Каков лучший способ поделиться MasterPages между проектами - PullRequest
23 голосов
/ 27 августа 2008

Предположим, у вас есть два отдельных проекта веб-приложений ASP.NET, в которых оба должны использовать общую мастер-страницу.

Какой лучший способ поделиться MasterPage между проектами без дублирования кода? Желательно, не прибегая к управлению исходным кодом или хаки файловой системы.

Ответы [ 7 ]

11 голосов
/ 17 декабря 2008

Я пытаюсь сделать то же самое. Я смотрю на пару решений, но я думаю, что использование виртуального каталога, вероятно, лучший способ поделиться мастер-страницами.

Вот пара источников, на которые вы можете посмотреть.

Третьи маркеры в конце статьи рассказывают о возможных способах обмена мастер-страницами.

4 голосов
/ 18 сентября 2008

Из статьи К. Скотта Аллена Основные страницы ASP.Net: советы, хитрости и ловушки , статья "Совместное использование мастер-страниц":

Первая альтернатива - скопировать общие файлы главной страницы в одно местоположение на веб-сервере IIS. Каждое приложение может затем создать виртуальный каталог в качестве подкаталога и указать виртуальный каталог в настоящий каталог мастер-страниц. Приложения могут затем установить свойство MasterPageFile страницы с именем виртуального каталог, плюс имя файла главной страницы. Когда мы бросаем обновлен файл главной страницы в реальном каталоге, новая главная страница сразу появится во всех приложениях.

Второй подход заключается в использовании системы контроля версий для обмена набором файлы главной страницы в нескольких проектах. Большинство источников контроля / системы контроля версий поддерживают некоторый уровень функциональности «общего доступа», где файл или папка могут появляться в нескольких проектах. Когда разработчик проверяет обновленный файл главной страницы, другие проекты сразу увидит изменение (хотя такое поведение обычно конфигурируемый). При производстве и тестировании каждое приложение должно быть повторно развернутым для отображения главной страницы обновления.

Наконец, VirtualPathProvider в ASP.NET 2.0 может обслуживать файлы, которые не существует в файловой системе. С VirtualPathProvider, набор главных страниц может жить в таблицах базы данных, что все приложения использовать. Отличную статью о VirutalPathProvider см. В разделе « Виртуализация доступа к контенту: обслуживание веб-сайта из файла ZIP ».

2 голосов
/ 27 августа 2008

Храните первичную копию в системе контроля версий, и пусть ваша система контроля версий беспокоится об этом.

0 голосов
/ 18 сентября 2008

Я не понимаю, почему вы хотели бы иметь одинаковую разметку для разных проектов, если вы это сделаете, я не знаю простой способ.

Однако с кодом, очевидно, вы можете написать файл кода, который наследуется от

System.Web.UI.MasterPage

Вставьте любую логику, какую хотите, на всех ваших главных страницах. Создайте его как свою замечательную DLL, а затем просто включите его в свои проекты.

0 голосов
/ 27 августа 2008

AFAIK, нет элегантного способа сделать то, что вы ищете. VS всегда будет копировать его.

Я думаю, если честно, это может быть не очень хорошей идеей. Очевидно, что вы хотите поделиться самым низким общим кодом, но целым MasterPage? .. Звучит так, как будто вы можете напрашиваться на неприятности, поскольку одно незначительное изменение может иметь такую влияние на одно или несколько приложений ..

Я бы предложил вместо этого разделить хорошие функциональные возможности на компоненты / элементы управления и развернуть их.

0 голосов
/ 27 августа 2008

Предположим, что вы можете создать общий репозиторий для всех ваших проектов (например, общую папку в дереве контроля версий), вы можете добавить главные страницы в виде ссылок, используя относительные пути.

Однако, IIRC, Visual Studio делает локальные копии файлов, добавленных из внешних путей. Возможно, вам придется отредактировать текст файла решения / проекта, чтобы добавить связанные файлы.

Это, конечно, предполагает, что вы используете формат "Веб-приложение". Старые «Веб-сайты» VS не имеют файлов проекта и полагаются на наличие всех файлов в папке сайта.

0 голосов
/ 27 августа 2008

Используйте символическую ссылку :

Символическая ссылка - это объект файловой системы, который указывает на другой файл системный объект. Указываемый объект называется целью. Символические ссылки прозрачны для пользователей; ссылки отображаются как обычно файлы или каталоги, и могут быть изменены пользователем или приложением точно так же.

...