Добавить все проекты в одно решение или нет? - PullRequest
0 голосов
/ 02 октября 2009

Я разработчик интранета для компании, в которой я работаю, и делаю это последние 5 лет. Мои проекты разделены на два решения: само решение «Интранет» и решение «Библиотека». Сама «Библиотека» sln имеет несколько проектов, содержащих DAL, BLL и т. Д. Причина, по которой я оставил их в другом решении, заключается в том, что я подумал, что «возможно», однажды мою библиотеку sln можно будет использовать и в других проектах - Вы знаете, повторно использовать код, который я уже написал :) Ну, этого никогда не было. Теперь, так как все проекты в одном .sln проще, я думаю просто сделать это. Это мудрая ситуация? Что бы вы сделали, если бы вы были на моем месте?

Ответы [ 6 ]

2 голосов
/ 02 октября 2009

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

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

Единственное, на что следует обратить внимание, это привести проект к решению, которое зависит от множества других проектов / решений, а затем «случайно» изменить в нем код, не осознавая, что он находится в стороннем проекте, а не в основном коде. , Тогда вы можете начать ломать кучу других проектов, которые зависят от этого и не осознают!

0 голосов
/ 02 октября 2009

Я предпочитаю иметь 2 решения. Они оба имеют одинаковую структуру (более или менее), но второй содержит только повторно используемый код инфраструктуры, который не привязан к конкретному проекту. Дело в том, что код вашего проекта не должен содержать инфраструктурный (то есть метод расширения строки IsNumeric ()) рядом с серьезной банковской бизнес-логикой (даже если вы не будете повторно использовать свою «Библиотеку»). Это делает вещи более читабельными и понятными.

Например:

Solution1:

  • ProjectName.Core
  • ProjectName.Infrastructure
  • ProjectName.Application
  • ProjectName.UI
  • ProjectName.IntegrationTests
  • ProjectName.UnitTests

И

Solution2:

  • CompanyName.Core
  • CompanyName.Infrastructure
  • CompanyName.Application
  • CompanyName.UI
  • CompanyName.Tests

И я стараюсь не иметь более 10 проектов в одном решении. В противном случае - это приводит к бесконечному переключению между «unload project» / «reload project».

0 голосов
/ 02 октября 2009

Я, со своей стороны, разделил Решения и проекты, оставив мне большой набор проектов и всего несколько файлов решений. Я добавляю все проекты, которые мне нужны, в новые решения.

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

0 голосов
/ 02 октября 2009

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

Так что да, я добавляю все к одному решению: графические проекты, библиотеки, даже модульные тесты. Возможно, если ваше решение станет невероятно большим (20+ проектов или больше), было бы лучше разделить их, но я никогда не работал над такими большими проектами.

0 голосов
/ 02 октября 2009

Просто добавьте свои библиотечные проекты в интранет sln. Сохраняйте свое библиотечное решение как есть.

0 голосов
/ 02 октября 2009

Да, вы можете сделать это! Вы все еще можете повторно использовать DAL и BLL, поскольку настройки проекта хранятся в определенных файлах проекта (csproj, vbproj, ...). Кроме того, там хранятся зависимости, так что никаких проблем нет. У меня есть addin-инфраструктура, и для каждого и каждого addin-пакета мне нужен addin-host, который включен в несколько файлов решения. Я никогда не испытывал никаких проблем с этим. Откройте файл * .sln в текстовом редакторе, чтобы увидеть его содержимое ... просто ссылки на проекты.

...