Добавление файла dll в проект C # - PullRequest
5 голосов
/ 23 июня 2009

Это вопрос для начинающих, но ...

Изображение ссылки на dll и dll, включенных в файл проекта http://a3.vox.com/6a00c2251e5b66549d00e398ca81eb0003-pi

Если вы посмотрите на изображение выше, то есть библиотека "Bass.Net", добавленная как ссылка, а также непосредственно как файл в проект.

Может кто-нибудь сказать мне, какой смысл делать это?

Ответы [ 7 ]

3 голосов
/ 23 июня 2009

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

  • bass.dll
  • bassenc.dll
  • lame.exe

.net one находится с другими в том же каталоге, и вам нужно добавить его в качестве ссылки.

2 голосов
/ 23 июня 2009

В Windows DLL - это библиотека динамических ссылок , которая объединяет набор программных функций. В этом примере bass.dll предоставляет функции и возможности, относящиеся к обработке звука через этот файл (и любые файлы, от которых он зависит). Чтобы использовать эту функцию, вам нужна ссылка в решении, чтобы Visual Studio могла связать ее во время компиляции. Затем DLL обычно копируется в ваш выходной каталог при сборке приложения.

Это все, что необходимо для правильной работы кода, остальное - просто предпочтение или соглашение. Некоторые люди предпочитают иметь все файлы, которые существуют в каталоге проекта в решении, чтобы обозреватель решений отражал файловую систему. Как правило, вы захотите иметь библиотеки, от которых зависит ваше приложение, где-то в иерархии каталогов вашего решения, чтобы все приложение упаковывалось вместе (например, облегчая использование контроля исходного кода). Однако вы не захотите помещать эту библиотеку в каталог BIN или в любой каталог, сгенерированный Visual Studio, чтобы избежать случайного удаления. В любом случае наличие ссылки является важной частью, файл в проекте или решении не требуется.

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

  • Источник: исходный код и файлы проекта
  • Библиотеки: библиотеки DLL
  • Поддержка: Разный код или проекты, но фактически не являются частью приложения (возможно, сценарии развертывания)
1 голос
/ 23 июня 2009

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

Звучит так, как будто они помещают справочные библиотеки в каталог проекта, отсылают их оттуда, а также включают в проект. Таким образом, когда каталог проекта будет скопирован, справочная библиотека будет скопирована с ним. Кроме того, если ссылка DLL отсутствует, проект будет жаловаться в Visual Studio.

0 голосов
/ 14 августа 2009

Это на самом деле может быть хорошей идеей во многих обстоятельствах. На мой взгляд, это 3 типа зависимостей

  1. Сборки из стандартной библиотеки .Net. Никогда не включайте их локально.
  2. Сборки, которые, как вы ожидаете, будут установлены другими разработчиками как часть пакета установки MSI или exe. Обычно это означает, что они строго подписаны и имеют копию в GAC.
  3. Сборки, которые вы не ожидаете, что другие разработчики установят через MSI или exe установщик. Может быть, потому что у вас есть третья сторона или в домашней библиотеке нет в GAC.

В третьем случае самое простое, что нужно сделать, это сохранить копию библиотеки DLL в исходном репо.

0 голосов
/ 23 июня 2009

Действительно трудно догадаться, почему кто-то еще что-то сделал, но если бы я действительно должен был догадаться, я бы сказал, что парень решил встроить необходимые библиотеки в качестве ресурсов, чтобы быть уверенным, что это было доступно приложению. Я видел эту технику для встраивания шрифтов или звуков и не уверен, работает ли она вообще с dll; но это всего лишь предположение.
Конечно, лучшим способом убедиться, что файлы были доступны, было бы создать проект развертывания, используя Visual Studio или какой-либо другой инструмент установки, например Wise или InnoSetup, и это лишь некоторые из них.

0 голосов
/ 23 июня 2009

Нет смысла, что лучше всего получить все ваши зависимости и сохранить их в отдельной папке и ссылаться только на них, а не копировать их в ваше решение;)

0 голосов
/ 23 июня 2009

Если сборка (в вашем случае Bass.Net.dll) содержит классы, которые вы хотите использовать, вы должны добавить ссылку на эту сборку в свой проект.

...