【问题标题】:.NET deploying dlls that project does not use but referenced dlls require.NET 部署项目不使用但引用的 dll 需要的 dll
【发布时间】:2012-08-02 06:31:08
【问题描述】:

所以问题很简单:我的项目引用了程序集 X 而不是 Z。但是程序集 X 确实引用了程序集 Z。程序集 Z 更新有点频繁,所以每当我构建我的项目时,我都想获得最新版本的Z 也是。

到目前为止,我提出了 3 个选项:

  1. 引用程序集 Z。这始终具有获取新版本的优势。但它确实会污染参考文献,因为那里没有严格要求。
  2. 添加一个构建后事件,从更新的地方复制所需的 DLL。我认为这很好,直到我需要多个不同的 DLL,这会使脚本变得很长而且维护起来很乏味。
  3. 将程序集 Z 添加为资源并将复制到输出设置为真。我可能更喜欢这个,除了当我将 DLL 添加到项目时,Visual Studio 实际上将(当时)当前版本复制到项目中,并且没有指向原始源的链接。因此,当程序集更新时,这不会以任何方式反映在我的项目中。除非我将这种方法与选项 2 结合起来,否则我还不如单独使用选项 2。

那么,我是否遗漏了什么,或者这些是我唯一的选择?

【问题讨论】:

    标签: c# dll reference


    【解决方案1】:

    我会选择选项 1。我认为您的项目引用它所依赖的所有内容是完全合理的,即使这些依赖关系有时可能是间接的。

    这对我来说似乎也是 最简单 选项 - 并且符合 Visual Studio 对您的应用程序所需的代码依赖项的看法......所以 Visual Studio 对这些依赖项所做的任何事情都应该只是自然而然地流动,而不必在每个阶段都考虑这一点。

    编辑:作为替代选项,您是否考虑过使用NuGet?这样,您在项目的 NuGet 依赖项中表达对 X 的依赖,但它会“知道”它依赖于 Z。我相信它应该都能正常工作...即使这些是内部项目,您也应该能够执行此操作,因为您可以设置自己的 NuGet 源而不是公共存储库。

    【讨论】:

    • 谢谢,是的,我也最喜欢选项 1。尽管 NuGet 将是一个有趣的选择。我自己从来没有在它上面部署过任何东西,但我认为它会成为一个有趣的测试用例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多