2009-12-02 3 views
3

ПримерКак структурировать все приложения в Visual Studio?

Я работаю над проектом, который имеет 3 отдельные части (ASP.NET MVC, WinForms, Silverlight) и 15 проекта (Common, Api, Услуги, Repository и CABs Winform в).

Резолюции

1) Все это проект в одном решении
2) Для каждой части есть решение

Что является лучшим способом борьбы с решениями и проектами в Visual Studio?

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

ответ

1

Я как. Вы можете добавить один проект к нескольким решениям.

+0

У меня возникла проблема с этой конфигурацией. Если вы добавите ссылку на проект в том же решении, а затем поместите указанный проект ALSO в другое решение ... Ссылка на проект в первом решении будет нарушена. Это то, что случилось со мной. (VS 2008) –

+0

У меня никогда не было таких проблем. – GvS

+0

Я согласен с @GvS, у меня никогда не было проблемы с повреждением проекта, который был размещен в нескольких решениях. – kenny

0

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

0

Естественно, это одно решение для каждого приложения (exe или размещено не имеет значения). Затем поместите все сборки, которые вы часто отлаживаете или рефакторируете.

Другие сохраняют как скомпилированные двоичные файлы.

0

У меня было бы одно решение для каждой части, что означает, что каждый ASP.NET MVC, silverlights и winform имеет свой собственный файл .sln.

Что касается рефакторинга, это не имеет значения, потому что если у вас установлен Resharper, то, как вы реорганизуете код в других решениях, ваши обновленные cs-файлы csprojects будут сиять красным цветом (без компиляции) , и вы можете просто переименовать за один клик (Изменить все xxx на yyy)

0

Затем под папкой «Презентация» создайте отдельные папки для Интернета, Windows, Silverlight. Каждый проект будет помещен в соответствующую папку.

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

Итак, типичное решение для меня может иметь 15 - 20 различных проектов в дереве, в зависимости от сложности решения.

0

Я бы на самом деле думал, что первый будет лучше для ясности. Причина в том, что проще сказать, измените ли вы общий проект для MVC, если компилятор кричит на вас для проекта WinForm. Кроме того, вы должны иметь возможность настроить отладчик таким образом, чтобы при нажатии Debug он отлаживал только выбранный проект (выберите MVC, WinForm или Silverlight, прежде чем нажимать кнопку отладки). Это облегчит вам отладку MVC, Winform и Silverlight, не требуя изменения настроек отладки.

1

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

Я предлагаю создать SolutionInfo.cs в папке Solution Items и добавить ссылку на это во всех ваших проектах. Затем вы можете удалить большинство атрибутов сборки в файлах AssemblyInfo.cs. У меня есть только 3 атрибута в AssemblyInfo: AssemblyTitle, AssemblyDescription, Guid. Другие свойства распределяются между всеми моими проектами.

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

Назовите свои проекты в соответствии с пространствами имен, например, если ваш проект называется «Спорт», затем назовите решение «Спорт», разделяемую библиотеку для «Sport.Common», «Sport.Web» и т. Д. ,

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

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