2009-10-12 4 views
1

В настоящее время я разрабатываю большое приложение. На данный момент у меня есть одно решение (это может измениться в полноте времени) со многими проектами.Средство/Большое решение - Процесс сборки Visual Studio - Необходимый совет

Я создал структуру каталогов, как:

\ Lib \ (содержит общие компоненты 3-й партии) сборки \ сборки \ Bin (выходной каталог) сборки \ Wwwroot (выходной каталог для веб-приложения) конфигурация \) SRC \ (содержит папки для проектов ниже)

на каждом из проектов, я поставил место сборки (выходной каталог) в «.. \ сборки \ Bin \» Это, как проиллюстрировано выше, делает проекты встроенными в build \ bin, выше каталога src. На

Company.Entities Ссылки Company.Common Это все бизнес-объекты (клиент, заказ, продукт) и т.д. ....

Company.Common Содержит классы, форматирование строк, дат, доступа к файлам и т. д. Не содержит ссылок на другие компании. библиотеки.

Company.Data Ссылки третьей стороны Lib (Windsor Castle, например) Это содержит интерфейсы, такие как IRepository, ICustomerRepository, IOrderRepository и т.д .... Имеет RepositoryFactory класса - это есть метод, называемый «Get (), который использует Ioc (Castle Windsor) для возврата. Также содержит IoC для разрешения текущих реализаций этих репозиториев. Castle.config находится в каталоге \ config \ и включает в себя «как ссылку» в этом проекте. Я настроил его всегда копировать в выходной каталог

Company.Data.LinqToSql Ссылки Company.Data Это текущая библиотека доступа к данным. Это экземпляр по IoC

Company.Logic Ссылки на Company.Data Бизнес-логика слой - имеет такие методы, как GetProductById (строка ID) - это, в свою очередь, вызывает Repository.Get() GetByID (ID). - например

Компания. Тесты Самообучающийся ... будет более активно использовать это в будущем.

Company.Web Ссылки Company.Logic, Company.Entities, Company.Common Web UI слой - это основной сайт.

Хорошо, надеюсь, это даст вам небольшой фон в текущей архитектуре моих проектов и т. Д. ...

В настоящее время я строю все в каталоге build/bin, за исключением Company.Web, который строится в build/wwwroot (там добавлен каталог bin) У меня тогда есть событие после сборки, которое копирует aspx-страницы, таблицы стилей, изображения, js-файлы и т. д. .... из src/Company.Web для сборки/wwwroot Я настроил Visual Studio на использование IIS для отладки и настроил виртуальный каталог iis, чтобы указать на мою папку build/wwwroot.

Однако ... Некоторые требуемые файлы не встроены в каталог Wwwroot/бен Такие как - Company.Data.LinqToSql - так как это не ссылается proejcts, но конкретизированных с помощью IoC

Как может Я улучшаю свою структуру/структуру проекта, чтобы помочь мне в разработке? Я буду «раскрывать» все разумные предложения.

ответ

1

Одна вещь, которая выпрыгивает, это копирование выходных файлов для сборки/bin. У вас есть отдельные подпапки для сборки Release и Debug? Я работал над крупным проектом, который использовал подобную настройку для вас, и мы часто сталкивались с проблемами, когда кто-то переключился с одной сборки на другую, но не все файлы были обязательно перестроены (по той или иной причине). каталог часто содержал смесь файлов из двух сборок.

Что касается событий после сборки, я стараюсь избегать их, поскольку они, как правило, трудно найти, когда вам нужно их модифицировать позже. Они также раздражают вас, когда вам нужно другое поведение на машине разработчика и сервере сборки. Вместо этого я обычно создаю файл .bat или скрипт MSBuild для обработки копирования файлов, копирования и т. Д.

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

Смежные вопросы