Я записал изрядное количество программного обеспечения за последние годы, большинство которых все склонны совместно использовать одну или несколько общих библиотек. (Наиболее распространенная библиотека, будучи той, которую я использую для вызова хранимых процедур SQL и возврата массивов объектов),
Я не доволен способом, которым я управляю библиотеками, и я ищу предложения для улучшения способа, которым я работаю.
В первый раз я создал то, что является теперь общей библиотекой, я добавил библиотеку как отдельный проект библиотеки классов в решении.
Теперь, когда я запускаю новое решение, и я знаю, что испытываю необходимость в библиотеке, которую я уже имею, я пойду и найду проект библиотеки и скопирую файлы в новое решение.
Это оставляет меня с несколькими копиями тот же проект библиотеки отмеченный точкой вокруг моей файловой системы (и сервер SVN), и это просто не чувствует себя хорошо.
Существует ли лучший способ работать, так, чтобы у меня только была одна основная копия этой библиотеки, которую все решения совместно используют, а не каждое решение, имеющее его собственную копию проекта библиотеки?
Просто создайте библиотеку один раз и укажите скомпилированный двоичный файл из вашего проекта, который должен его использовать.
В Visual Studio щелкните проект правой кнопкой мыши и выберите «Добавить ссылку», затем выберите вкладку «Обзор» и найдите двоичный файл своих библиотек.
(Очевидно, вам потребуется распространить сборку библиотеки вместе с вашим приложением)
Вам нужно просто создать dll с вашей библиотекой, а затем просто сослаться на нее ..
Ссылки> Добавить ссылку в VS.
Ваше мнение абсолютно верно. Должен быть только один мастер библиотеки источник .
В нашем магазине у нас есть несколько проектов общих библиотек, используемых в нескольких продуктах. Мы рассматриваем эти библиотеки как сами продукты и относимся к ним соответственно. В частности, когда проекту требуется одна из этих библиотек, мы помещаем скомпилированную версию библиотеки в папку lib в проекте. Мы избавляемся от необходимости копировать исходный код, и наш проект ссылается только на стабильную копию dll.
Вот пример структуры в репозитории
/ LibraryX <- корень продукта ../branches ../tags ../trunk <- папка решения ../LibraryX <- папка проекта ../lib <- сторонние библиотеки, используемые LibraryX / ProductY <- корень продукта ../branches ../tags ../trunk <- папка решения ../ProductY <- папка проекта ../lib <- сторонние библиотеки , используемые ProductY, например копия LibraryX.dll
Итак, в проект ProductY вместо того, чтобы включать копию проекта LibraryY, вы добавляете ссылку на LibraryX.dll, находящуюся в папке lib.
Я бы посоветовал скомпилировать вашу библиотеку в dll, которую можно добавить в качестве ссылки на любой другой проект, над которым вы работаете. Тогда вам не нужно везде копировать исходные файлы.