Как объединить главные страницы ASP.NET в приложениях?

Первый шанс задать вопрос на этих досках, так что, надеюсь, я смогу получить некоторую помощь, вот оно:

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

Я имею в виду, что в каждом приложении есть копия одной и той же главной страницы. Все они являются базовыми многоуровневыми приложениями веб-сайтов-> WCF-> BL-> DB. Итак, у меня есть 4 копии одной и той же главной страницы, которые мне нужно изменить, когда я внесу в нее изменения.

Клиент НЕ хочет объединять все это в одно решение. Им нравится разделение приложений по сайтам. Я просто не хочу продолжать иметь дело с множеством обновлений для общих элементов (которых будет намного больше в этих приложениях).

Весь код хранится на сервере Team Foundation. Мы также НЕ хотим компилировать главную страницу в .dll и развертывать ее.

Может ли кто-нибудь сделать несколько предложений относительно того, как я могу поддерживать одну копию этих общих файлов (master, .css и т. Д.) Во многих моих приложениях.

заранее спасибо


person chrisjlong    schedule 23.01.2009    source источник


Ответы (6)


Возможно, вы захотите посмотреть Совместное использование главных страниц в Visual Studio < / а>.

Если это не поможет, вы можете попробовать использовать Build Events в Visual Studio. Я бы выбрал один из проектов в качестве своего «Основного проекта» и редактировал только главную страницу этого проекта. Когда вы создаете проект, он запускает команду, которая копирует эту главную страницу (если она была изменена) в ваши заданные местоположения.

person cgreeno    schedule 23.01.2009
comment
Спасибо, что ваше предложение об использовании Build Events было для меня сегодня полезным. - person jessegavin; 23.12.2011

Клиент НЕ хочет объединять все это в одно решение. Им нравится разделение приложений по сайтам. Я просто не хочу продолжать иметь дело с множеством обновлений для общих элементов (которых будет намного больше в этих приложениях).

Весь код хранится на сервере Team Foundation. Мы также НЕ хотим компилировать главную страницу в dll и развертывать ее.

Вы исключили там только два реальных варианта. Что все находится на главной странице? Можно ли извлечь элементы пользовательского интерфейса HTML в один или несколько шаблонов HTML-файлов и динамически импортировать их на главную страницу? Затем вы можете переместить общий HTML-код на произвольный URL-адрес и заставить главную страницу для каждого приложения динамически извлекать его.

Изменить: я солгал. Вы также можете использовать VirtualPathProvider, такой как Sharepoint, для хранения главной страницы в базе данных или другом каталоге, но будьте осторожны, если VirtualPathProvider не работает в средах MediumTrust.

См.:
http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx

person Chris    schedule 23.01.2009
comment
В итоге я выбрал этот маршрут. Я создал поставщика виртуального пути и встроил свою главную страницу в DLL, и это работает. Но теперь у меня огромная проблема в том, что страница содержимого, главная страница которой поздно привязана через код позади, вызывает шипящие совпадения проверки / форматирования, потому что думает, что это должна быть подставка на странице. мои CNTRL + K, CNTRL + D сломались на каждой странице, где я сейчас делюсь своей главной страницей. Это очень расстраивает меня и команду. - person chrisjlong; 18.02.2010

Если вы используете веб-приложения (скомпилированные в dll), а не веб-сайты, вы можете сделать следующее:

Щелкните правой кнопкой мыши папку, в которой вы хотите сохранить главную страницу.

Выберите «Добавить существующий элемент ...»

Перейдите на главную страницу файловой системы и выберите файлы .master и .master.cs.

Затем, вместо того, чтобы нажимать кнопку «Добавить», нажмите небольшую стрелку вниз справа от кнопки «Добавить», это вызовет небольшое меню с параметрами: «Добавить» и «Добавить как ссылку».

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

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

Это недоступно в проектах веб-сайтов, поскольку они полагаются на файловую структуру для определения того, что находится в проекте.

person Zhaph - Ben Duguid    schedule 23.01.2009

РЕДАКТИРОВАТЬ: пропустил часть css. Очевидно, вы не сможете обслуживать эти файлы, поэтому это должно работать только для главной страницы.

Не знаю твоего сценария, поэтому

ЕСЛИ вы можете управлять DNS / виртуальными каталогами приложений, вы можете использовать такой формат:

c: \ inetpub \ wwwroot \ Application1
c: \ inetpub \ wwwroot \ Application2
c: \ inetpub \ wwwroot \ Application3
c: \ inetpub \ wwwroot \ Application4
c: \ inetpub \ wwwroot \ Application5
и разместите свою главную страницу в c: \ inetpub \ wwwroot \ master.Master,
c: \ inetpub \ wwwroot \ master.Master.cs,
c: \ inetpub \ wwwroot \ master.Master.cs.designer

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

person John Hoven    schedule 23.01.2009

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

person Andrew Barrett    schedule 27.02.2009

В итоге я выбрал маршрут VPP. Я создал поставщика виртуального пути и встроил свою главную страницу в DLL, и это работает. Но теперь у меня огромная проблема в том, что страница содержимого, главная страница которой поздно привязана через код позади, вызывает шипящие совпадения проверки / форматирования, потому что думает, что это должна быть подставка на странице. мои CNTRL + K, CNTRL + D сломались на каждой странице, где я сейчас делюсь своей главной страницей. Это очень расстраивает меня и команду

person chrisjlong    schedule 17.02.2010