5

这是一个初学者的问题,但是...

项目文件 http://a3.vox.com/6a00c2251e5b66549d00e398ca81eb0003-pi 中包含的 dll 参考和 dll 的图像

如果您查看上图,则会添加“Bass.Net”dll 作为参考,也可以直接作为项目中的文件添加。

有人能告诉我这样做有什么意义吗?

4

7 回答 7

3

没有理由,真的。可能是 Visual Studio 设置为显示不在项目中的文件(从图片中很难分辨),而 dll 恰好位于主目录中。文字很清楚,额外的文件是

  • 低音.dll
  • 巴森c.dll
  • 蹩脚的.exe

.net 恰好与其他目录位于同一目录中,您需要将其添加为参考。

于 2009-06-22T21:52:51.800 回答
2

在 Windows 中,DLL 是一个动态链接库,它将一组编程功能打包在一起。在此示例中,bass.dll 通过此文件(以及它所依赖的任何文件)公开了与音频处理相关的特性和功能。为了使用此功能,您需要解决方案中的引用,以便 Visual Studio 可以在编译时链接它。然后,DLL 通常会在构建应用程序时复制到您的输出目录。

这就是使代码正常工作所必需的一切,其余的实际上只是偏好或约定。有些人喜欢将项目目录中存在的所有文件都包含在解决方案中,以便解决方案资源管理器反映文件系统。通常,您会希望您的应用程序依赖于解决方案目录层次结构中的某个位置,以便将整个应用程序打包在一起(例如,使源代码控制更容易使用)。但是,您不希望将此库放在 BIN 目录或 Visual Studio 生成的任何目录中,以避免意外删除。无论如何,引用是重要的部分,项目或解决方案中的文件不是必需的。

但是,通常情况下,您会希望将外部库保留在源目录之外,因此我实际上并不推荐这种结构。我倾向于使用这样的结构,但是,这也是所有偏好:

  • 来源:源代码和项目文件
  • 库:DLL
  • 支持:杂项代码或项目,但实际上不是应用程序的一部分(可能是部署脚本)
于 2009-06-22T22:08:37.117 回答
1

将这些放在项目和输出目录中,最终执行代码可以引用它们,而不会在不同机器上运行任何问题。

听起来他们将引用 dll 放在项目目录中,从那里引用它们,并将它们包含在项目中。这样,在复制项目目录时,引用的 dll 也会随之复制。此外,如果缺少引用 dll,项目将在 Visual Studio 中报错。

于 2009-06-22T21:59:30.537 回答
0

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

于 2009-06-22T21:52:00.957 回答
0

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

于 2009-06-22T21:58:37.730 回答
0

真的很难猜出为什么别人会做某事,但如果我真的不得不猜的话,我会说那个人想将必要的 dll 作为资源嵌入,以确保它对应用程序可用。我见过这种用于嵌入字体或声音的技术,但不确定它是否适用于 dll;但这只是一个猜测。
当然,确保文件可用的最佳方法是使用 Visual Studio 或其他一些安装工具(例如 Wise 或 InnoSetup)创建部署项目,仅举几例。

于 2009-06-23T07:36:11.387 回答
0

在很多情况下,这实际上可能是一个好主意。在我看来,它们是 3 种依赖类型

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

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

于 2009-08-13T21:00:17.820 回答