En Windows, una DLL es dynamic link library, que empaqueta un conjunto de funcionalidades programáticas. En este ejemplo, bass.dll expone las características y funcionalidades relevantes para el procesamiento de audio a través de este archivo (y cualquier archivo del que dependa). Para utilizar esta funcionalidad, necesita la referencia en la solución, para que Visual Studio pueda link it en tiempo de compilación. Normalmente, el archivo DLL se copiará en el directorio de salida cuando se genere la aplicación.
Eso es todo lo que se necesita para que el código funcione correctamente, el resto es solo una preferencia o convención. Algunas personas prefieren tener todos los archivos que existen en el directorio del proyecto en la solución, de modo que Solution Explorer refleje el sistema de archivos. Normalmente, querrá tener bibliotecas de las que su aplicación dependa en algún lugar de la jerarquía de su directorio de soluciones para que toda la aplicación esté empaquetada (por ejemplo, hacer que el control del código fuente sea más fácil). No querrás poner esta biblioteca en el directorio BIN o en cualquier directorio que genere Visual Studio, para evitar eliminaciones accidentales. En cualquier caso, tener la referencia es la parte importante, el archivo que está en el proyecto o la solución no es necesario.
Normalmente, querrá mantener las bibliotecas externas fuera de sus directorios de origen, por lo que en realidad no recomendaría esta estructura.Yo tiendo a usar una estructura como esta, pero, de nuevo, esto es todo preferencia:
- Fuente: código y archivos de proyecto Fuente
- Bibliotecas: DLL
- Soporte: código o proyectos diversos, pero en realidad no parte de la aplicación (quizás scripts de implementación)
bien entiendo por qué está en la Referencia, pero no por qué se agrega como un archivo en el proyecto. – Mat
Lo siento, no entendí bien la pregunta. Sí, es suficiente agregarlo como referencia, tenerlo "agregado como un archivo" no es importante. Y, por supuesto, debe estar en la misma carpeta que el ejecutable más tarde cuando implemente su aplicación. – Groo