Могу ли я использовать классы и элементы управления из основного проекта в других проектах в рамках одного решения? - PullRequest
2 голосов
/ 24 марта 2010

Как разделить исходные файлы на проекты (в рамках одного решения) до

  1. иметь возможность использовать общие классы в более относительно независимых приложениях
  2. избегать большого количества необходимых библиотек (желательно в одном файле для каждого приложения),
  3. держите это быстро?

Существуют рабочие (обработка данных) классы, пользовательские элементы управления, некоторые служебные классы и формы приложения.

Ответы [ 4 ]

5 голосов
/ 24 марта 2010

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

Каждый раз, когда вы разделяете код на отдельную (повторно используемую) сборку, он добавляет одну дополнительную DLL (проект библиотеки классов) в качестве требования во время выполнения, но это очень минимально.

Нет реальных (значительных) изменений в производительности при этом. Это очень распространенная практика.

1 голос
/ 24 марта 2010

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

Вы должны сгруппировать ваш общий код по предоставляемым функциям в отдельные библиотеки DLL. Итак, один для доступа к данным, один для пользовательских элементов управления, один для каждого типа служебной функции и т. Д. Затем, если у вас есть веб-сервис, который обращается к данным, вам не нужно будет перекомпилировать сервис, когда вы добавляете новый пользовательский элемент управления в одну DLL , Только те приложения, которые зависят от изменений, должны быть перекомпилированы.

1 голос
/ 24 марта 2010

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

Например, у вас может быть библиотека Common, содержащая базовые классы, используемые всем остальным, и, возможно, библиотека Controls, содержащая пользовательские элементы управления.

Каждая логическая единица классов может находиться в пространстве имен в одной и той же библиотеке или в отдельной библиотеке; вам нужно решить, какой.

0 голосов
/ 24 марта 2010

Вы можете поместить общие классы в одну сборку (скажем, CommonUtils), а затем использовать пространства имен внутри для группирования, чтобы указать, как они разбиваются

...