Каков наилучший способ поделиться мастер-страницами между проектами

StackOverflow https://stackoverflow.com/questions/30884

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

В третьем разделе ближе к концу статьи рассказывается о возможных способах совместного использования мастер-страниц.

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

System.Web.UI.MasterPage

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

Использование символическая ссылка:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top