Среднее / Большое решение - Visual Studio Процесс сборки - Нужны советы - PullRequest
1 голос
/ 12 октября 2009

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

Я установил структуру каталогов следующим образом:

\ lib \ (содержит общие сторонние компоненты) строить \ build \ bin (выходной каталог) build \ wwwroot (выходной каталог для веб-приложения) конфиг \) src \ (содержит папки для следующих проектов)

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

Company.Entities Референции Company.Common Здесь есть все бизнес-объекты (клиент, заказ, продукт) и т. Д ....

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

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

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

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

Company.Tests Самоочевидный ... будет больше использовать это в будущем.

Company.Web Отзывы Company.Logic, Company.Entities, Company.Common Слой веб-интерфейса - это основной сайт.

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

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

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

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

1 Ответ

1 голос
/ 18 октября 2009

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

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

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

...