2009-06-22 2 views
5

Это начинающий вопрос, но ...Добавления файла DLL в C# проект

Image of dll reference and dll included in project file http://a3.vox.com/6a00c2251e5b66549d00e398ca81eb0003-pi

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

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

ответ

3

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

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

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

0

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

+0

хорошо, я понимаю, почему он находится в ссылке, но не почему он добавляется как файл в проекте. – Mat

+0

Извините, я не понял вопрос правильно. Да, достаточно добавить его в качестве ссылки, поскольку это «добавлено как файл» не важно. И, конечно, он должен быть в той же папке, что и ваш исполняемый файл, позже, когда вы развертываете приложение. – Groo

0

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

+0

Иногда имеет смысл иметь локальную копию DLL. –

1

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

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

2

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

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

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

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

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

0

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

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

В третьем случае проще всего хранить копию DLL в исходном репо.

Смежные вопросы