Самый удобный метод для совместного использования кода между несколькими проектами - PullRequest
1 голос
/ 26 августа 2010

С учетом того, что на нескольких веб-сайтах используется один и тот же исходный код, каков наилучший / наиболее удобный способ организовать их в проекты в пределах Visual Studio?

Например, скажем, у нас есть веб-сайты Red, Blue и Green (и т. Д.). Их HTML может отличаться, но они функционально одинаковы.

Ранее в одном решении мы создали один проект Colour, который содержит общую версию проекта. Red, Blue и Green получают свой собственный проект, и каждая техническая страница настроена на использование C # в Colour. (То есть не существует уникального C # для отдельных реализаций - все файлы кода удаляются).

Тем не менее, этот подход приводит нас к тому, что в конечном итоге мы получаем несколько отдельных библиотек реализации, которые практически ничего не делают, а также другие вещи, такие как javascript, css и обычные изображения, дублируются в разных проектах.

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

Есть ли лучший путь?

edit: забыл упомянуть, что вся бизнес-логика / доступ к данным обрабатывается совместно используемым проектом Business Layer, поэтому весь код для этого является отдельным и общим.

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Упакуйте общий код в библиотеку классов.Это позаботится о слое данных, бизнес-логике и некоторых других вспомогательных процедурах.По моему опыту, это очень помогает проектам, имеющим одинаковую основу.

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

1 голос
/ 26 августа 2010

Я бы рекомендовал вам использовать шаблон MVP с ASP.NET . Таким образом, у вас может быть один проект библиотеки классов, содержащий модели и презентаторы, на которые будут ссылаться несколько приложений ASP.NET, содержащих представления и, конечно, статические ресурсы, такие как JS, CSS, изображения, которые могут быть специфическими для каждого сайта. Конечно, если вы хотите обмениваться статическими ресурсами между веб-приложениями, вы можете поместить их в общее местоположение, чтобы на них ссылались оттуда (как SO делает с sstatic.net).

Итак, ваше решение может выглядеть так:

NameOfProject.sln
    |
    |-- NameOfProject.Presenters
    |
    |-- Web Application 1
    |
    |-- Web Application 2
  .....
    |-- Web Application n
...