Каков наилучший способ поделиться мастер-страницами между проектами
-
09-06-2019 - |
Вопрос
Предположим, у вас есть два отдельных проектов веб-приложений ASP.NET что и нужно использовать общие MasterPage.
Каков наилучший способ поделиться главной страницей между проектами без необходимости дублировать код?Предпочтительно без необходимости прибегать к системе управления версиями или взлому файловой системы.
Решение
Я пытался добиться того же самого.Я рассматриваю пару решений, но думаю, что использование виртуального каталога, вероятно, лучший способ поделиться главными страницами.
Вот пара источников, на которые вы можете обратить внимание.
- Совместное использование основных страниц среди Приложений путем встраивания их в Библиотеку DLL
- Общий доступ к основным страницам в Visual Studio
- ASP.Net 2.0 - Основные страницы:Советы, хитрости и ловушки
В третьем разделе ближе к концу статьи рассказывается о возможных способах совместного использования мастер-страниц.
Другие советы
От К.Скотта Аллена ASP.Net Основные страницы:Советы, хитрости и ловушки статья в разделе "Общий доступ к основным страницам":
Первый вариант - скопировать общие файлы главной страницы в одно местоположение на веб-сервере IIS.Затем каждое приложение может создать виртуальный каталог в виде подкаталога и указать виртуальному каталогу реальный каталог главных страниц.Затем приложения могут задать свойству MasterPageFile страницы значение имени виртуального каталога плюс имя файла главной страницы.Когда мы помещаем обновленный файл главной страницы в реальный каталог, новая главная страница немедленно появляется во всех приложениях.
Второй подход заключается в использовании системы контроля версий для совместного использования набора файлов главной страницы в нескольких проектах.Большинство систем управления версиями / системы контроля версий поддерживают некоторый уровень функциональности “общего доступа”, когда файл или папка могут отображаться более чем в одном проекте.Когда разработчик проверяет обновленный файл главной страницы, другие проекты немедленно увидят изменения (хотя обычно это поведение настраивается).В процессе производства и тестирования, каждая заявка будет нужно быть перераспределены на главную страницу обновления, чтобы появиться.
Наконец, VirtualPathProvider в ASP.NET 2.0 может обслуживать файлы, которые не существуют в файловой системе.С VirtualPathProvider набор основных страниц может храниться в таблицах базы данных, которые используют все приложения.Отличную статью о VirutalPathProvider смотрите в разделе “Виртуализация доступа к контенту:Обслуживание вашего веб-сайта из ZIP-файла”.
Храните первичную копию в системе управления версиями, и пусть ваша система управления версиями позаботится об этом.
Предположим, вы можете создать общий репозиторий для всех ваших проектов (например, общую папку в дереве управления версиями), вы могли бы добавить основные страницы в виде ссылок, используя относительные пути.
Однако IIRC, Visual Studio создает локальные копии файлов, добавленных по внешним путям.Возможно, вам придется отредактировать текст в файле решения / проекта, чтобы добавить связанные файлы.
Это, конечно, предполагает, что вы используете формат "Веб-приложения".Более старые версии "веб-сайтов" не содержат файлов проекта и полагаются на наличие всех файлов в папке сайта.
AFAIK, нет элегантного способа сделать то, к чему вы стремитесь..VS всегда будет в конечном итоге копировать его.
Я думаю, честно говоря, что это, возможно, не самая лучшая идея..Очевидно, вы хотите поделиться не самым распространенным кодом, а целой главной страницей?..Похоже, вы напрашиваетесь на неприятности, поскольку одно незначительное изменение может оказать такое влияние на одно или несколько приложений..
Я бы предложил вместо этого разделить полезные элементы функциональности на компоненты / элементы управления и развернуть их.
Я не могу понять, почему вы хотели бы иметь одинаковую разметку в разных проектах, если вы это сделаете, я не знаю простого способа.
Однако с помощью code, очевидно, вы можете написать файл кода, который наследуется от
System.Web.UI.MasterPage
Добавьте любую логику, которую вы хотите, на все ваши основные страницы.Создайте его как свою потрясающую библиотеку dll, а затем просто включите ее в свои проекты.
Использование символическая ссылка:
Символическая ссылка - это объект файловой системы, который указывает на другой файловый системный объект.Объект, на который указывается, называется целевым.Символические ссылки прозрачны для пользователей;ссылки отображаются как обычно файлы или каталоги, и пользователь или приложение могут воздействовать на них точно таким же образом.