【问题标题】:Dependencies and references - What exactly should I reference?依赖关系和引用 - 我到底应该引用什么?
【发布时间】:2010-09-21 01:24:59
【问题描述】:

我想知道在构建我的项目时要包括什么。我有一个库需要为我的项目构建参考,但该库本身有 10 个依赖项。我应该也引用这些依赖项,还是应该使用构建后事件将它们复制到输出目录?

最佳做法是什么?

我发现包含所有这些依赖项是令人困惑的,因为项目在没有它们的情况下编译得很好——然后它们被称为运行时依赖项吗?我的引用变得杂乱无章,与我的项目无关,即使它们在我包含的某些库中使用。

我正在使用 Visual Studio。

有人可以告诉我如何正确地做到这一点。

谢谢。

【问题讨论】:

    标签: .net build reference


    【解决方案1】:

    这只是意见。无论哪种方式都可以。

    我个人讨厌构建后的 BAT 文件,因此我会包含依赖项以将它们复制到输出目录。

    另一种选择是在您的项目中放置指向它们的链接 - 就像在资源目录中一样。将此设置为 BuildAction=None 和 CopyToOutputDirectory=CopyIfNewer

    【讨论】:

      【解决方案2】:

      您只需添加项目直接使用的引用即可。

      对于私有程序集(不在 GAC 中),默认情况下,Visual Studio 会将引用的程序集(及其依赖项)复制到项目的输出目录中。

      对于 GAC Visual Studio 中的程序集,默认情况下不会将引用的程序集复制到项目的输出目录中。

      在这两种情况下,您都可以通过更改“复制本地”引用属性来更改行为。

      恕我直言,这是构建环境的一个绝妙功能。在非托管世界中,您可以跟踪依赖项的依赖项(通常通过构建前或构建后事件)。

      【讨论】:

        【解决方案3】:

        我想你是在 Visual Studio 中工作的。

        简短的回答是只包含项目编译所需的程序集。

        引用更多的程序集不会导致任何问题,因为您的应用程序会在运行时需要时加载程序集,但是拥有一长串引用会让人感到困惑和混乱。

        您的参考列表应该说明您的程序做了什么以及它使用了哪些功能。

        【讨论】:

        • 所以您建议使用构建后事件或其他方式为我引用的库提供运行时依赖项?
        • 嗯,这真的是一个品味问题。如果你的程序集在 GAC 中,你不需要做任何事情,但我不希望项目混乱。
        • GAC 中没有,所以在这种情况下我应该使用构建后事件吗?
        猜你喜欢
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多