Лучшие практики для ссылок на сторонние сборки - PullRequest
7 голосов
/ 20 ноября 2008

Мне было интересно, каковы лучшие практики, когда речь идет о ссылках на сторонние сборки. Некоторое время назад я задал вопрос " Зависимости и ссылки: что именно я должен ссылаться на " и получил что-то, над чем подумать, но я не совсем убежден. У меня есть сторонняя сборка, необходимая для сборки моего проекта, и согласно тому, что я прочитал до сих пор, я должен ссылаться только на сборки, необходимые для сборки моего проекта. Это оставляет проблему зависимостей времени выполнения сторонней сборки. Если я ссылаюсь на них тоже, список ссылок становится огромным (так как существует несколько зависимостей) и включает в себя множество сборок, я понятия не имею, что делать и на самом деле не имеет отношения к моему проекту. Также я хочу избежать использования публичных методов в любом из них и просто использовать основную стороннюю сборку. Как я могу сделать это достойным образом? Любая помощь приветствуется, так как я очень запутался.

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

Спасибо.

Ответы [ 3 ]

3 голосов
/ 20 ноября 2008

Если мне приходится иметь дело с библиотеками, которые не зарегистрированы в GAC, я использую следующий метод:

  • Сделать папку "Libs" со всеми сторонними библиотеками и их зависимостями в ней
  • Ссылка на те, которые мне нужны
  • Создание действия после сборки, которое копирует все файлы в папке «Libs» в папку «bin / debug» (или release)

Если вы не знаете зависимости, вы можете использовать Dependency Walker .

2 голосов
/ 20 ноября 2008

Альтернатива, которую я использовал во многих (C #) проектах:

  • Создайте папку «Bin» в каталоге решений (того же уровня, что и каталоги проекта)
  • Сделать вывод всех проектов ../Bin вместо bin / debug или bin / release
  • Поместите все файлы, которые не являются результатом сборки, в «корзину», включая зависимости библиотеки, определенные файлы данных или что-то еще, в зависимости от проекта
  • Содержимое "Bin" также отправляется в систему управления версиями (конечно, без вывода сборки)
  • Все библиотеки, на которые ссылаются ваши проекты, попадают в папку "References" или "Libs" (иногда я тоже пытался поместить их в Bin, но в этом случае вам нужно помнить, чтобы отключить копирование ссылок на выходной каталог при добавлении ссылки на ваш проект, который становится утомительным на крупных проектах)

Не совсем уверен, что это хорошее решение, но до сих пор работало для меня.

1 голос
/ 21 ноября 2008

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

...