Совместное использование исходного кода класса c # между несколькими проектами - PullRequest
34 голосов
/ 19 апреля 2010

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

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

Я могу использовать «добавить существующий файл», но куда мне поместить файл, чтобы следующий разработчик знал, что он необходим. У меня когда-то была «общая» папка для этого, но однажды эта папка не была перенесена на следующий компьютер разработки.

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

Ответы [ 7 ]

34 голосов
/ 19 апреля 2010

Вы можете создать библиотечный проект с таким классом, поэтому все, что вам нужно сделать, это добавить ссылку на этот проект.

Если это не вариант, вы можете использовать «Правый клик -> Добавить существующий элемент -> Добавить как ссылку» таким образом, у вас есть только одна копия кода, но она может существовать в нескольких проектах.

11 голосов
/ 19 апреля 2010

Библиотека классов для совместного использования является лучшим решением.

Но вы можете добавить файл в проект VS как ссылку, а не как копию. Для этого используйте раскрывающийся список на кнопке «Добавить» диалогового окна добавления существующего элемента.

6 голосов
/ 07 февраля 2011

Если вам действительно нужно поделиться исходным кодом, например, если у вас есть одновременная 32-битная и 64-битная сборки одной и той же сборки (что иногда требуется, если вы зависите от нативного кода), вы можете использовать ответ, данный в этой теме: Как вы делитесь кодом между проектами / решениями в Visual Studio?

(Ищите «связать» файл кода между двумя проектами.)

5 голосов
/ 19 апреля 2010

Разбейте свой регистрационный код на отдельную сборку.

Затем вы можете включить эту сборку в проекты, которые должны использовать этот регистратор.

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

1 голос
/ 05 декабря 2012

Поместите класс в уникальное пространство имен, затем добавьте файл в качестве ссылки на все проекты, которые вам нужны для его использования. Убедитесь, что вы поместили оператор using для этого уникального пространства имен, в котором вы будете использовать класс, или вам придется полностью квалифицировать каждое его использование. Для подобных ситуаций я думаю, что это гораздо предпочтительнее, чем сборка, поскольку она не генерирует ненужные перекрестные ссылки для чего-то, что является частью вашего собственного кода, которым вы просто хотите поделиться между своими проектами.

1 голос
/ 19 апреля 2010

Создайте новую сборку, которая содержит этот класс.

Тогда все ваши другие проекты могут ссылаться на эту сборку и использовать класс внутри.

0 голосов
/ 28 июня 2013

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

Обычно мы создаем каталог с решением и основным проектом, а затем фиксируем этот каталог в SVN. Затем все общие библиотеки связываются с использованием svn: external - поэтому все проекты находятся в одном каталоге решений.

После фиксации любой может проверить рабочее решение со всеми внешними зависимостями.

...