向C#项目添加一个dll文件

5
7个回答

3
没有特别的原因,可能是Visual Studio设置为显示不在项目中的文件(从图片上很难判断),而dll恰好在主目录中。文本很清楚,额外的文件包括:
  • bass.dll
  • bassenc.dll
  • lame.exe
.NET的那个恰好和其他文件在同一个目录中,您需要将其添加为引用。

2
在Windows中,DLL是动态链接库,它将一组编程功能打包在一起。在这个例子中,bass.dll通过该文件(以及任何它依赖的文件)公开与音频处理相关的特性和功能。为了使用这些功能,您需要在解决方案中引用它,以便Visual Studio可以在编译时链接它。当应用程序构建时,该DLL通常会被复制到输出目录中。
这就是使代码正常工作所必需的全部内容,其余部分实际上只是偏好或惯例。有些人喜欢将存在于项目目录中的所有文件都放在解决方案中,以便解决方案资源管理器反映文件系统。通常,您会希望将应用程序依赖的库放在解决方案目录层次结构的某个地方,以便整个应用程序被打包在一起(例如,更容易进行源代码控制)。但是,您不会想将此库放在BIN目录或任何Visual Studio生成的目录中,以避免意外删除。无论如何,重要的是拥有该引用,文件是否在项目或解决方案中并不重要。
通常情况下,你会希望将外部库文件与源代码目录分开存放,因此我不建议使用这种结构。我倾向于使用以下结构,但这只是个人偏好:
  • Source:源代码和项目文件
  • Libraries:DLL 库文件
  • Support:杂项代码或项目,但实际上并不是应用程序的一部分(例如部署脚本)

1
在项目和输出目录中拥有这些文件,可以让最终执行的代码在不同的机器上引用它们时没有任何问题。
看起来他们将参考dll放在项目目录中,并从那里引用它们,同时也将它们包含在项目中。这样,当复制项目目录时,参考dll也会被复制。此外,如果缺少参考dll,项目将在Visual Studio中报错。

0
如果一个程序集(在您的情况下是Bass.Net.dll)包含您想要使用的类,您必须将该程序集添加到您的项目引用中。

我理解为什么它在引用中,但不明白为什么它被添加为项目文件。 - Mat
抱歉,我没有理解问题。是的,只需将其添加为引用即可,将其“作为文件添加”并不重要。当然,在部署应用程序时,它必须与可执行文件位于同一文件夹中。 - vgru

0

没有意义,最好的方法是获取所有依赖项并将它们存储在单独的文件夹中,仅引用它们而不要将它们复制到您的解决方案中;)


有时候,拥有 DLL 的本地副本是有意义的。 - Justin Dearing

0

很难猜测别人为什么这样做,但如果我真的不得不猜测,我会说那个人认为将必要的dll作为资源嵌入以确保应用程序可用。我曾看到过使用此技术嵌入字体或声音,不确定是否适用于dll;但这只是一个猜测。
当然,确保文件可用的最好方法是创建部署项目,使用Visual Studio或其他安装工具,如Wise或InnoSetup等。


0

在许多情况下,这实际上可能是一个好主意。在我看来,有三种类型的依赖关系:

  1. 来自 .Net 标准库的程序集。永远不要在本地包含它们。
  2. 你希望其他开发人员作为 MSI 或 exe 安装包的一部分安装的程序集。这通常意味着它们具有强签名,并且在 GAC 中有一份副本。
  3. 那些你不希望其他开发人员通过 MSI 或 exe 安装程序安装的程序集。可能是因为你有一个第三方或内部库不在 GAC 中。

对于第三种情况,最简单的方法是在源代码库中存储 DLL 的副本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接