【问题标题】:Visual Studio Solution Project Reference or Dll ReferenceVisual Studio 解决方案项目参考或 Dll 参考
【发布时间】:2023-03-10 09:06:01
【问题描述】:

我正在寻找有关项目参考/dll 参考实践的指导。

情况是我们有一些实用程序 dll,它们在一堆项目中使用,一些团队成员在项目中引用,一些在 dll 中引用。

项目参考的缺点是:

  • 最终可能导致解决方案中的项目过多
  • 引入失败快速更新,因为 dll 无法再进行版本控制
  • 强制每个人为其代码使用类似的文件夹结构

lib 文件夹参考的缺点:

  • 延迟发现错误,因为 dll 可能会在项目后期使用它进行更新
  • 没有最新的 pdb 文件就无法进行调试

另外,确保所有项目仍然可以使用 dll 更新的好策略是什么?每当更新实用程序时,是否需要构建服务器触发依赖构建检查?

我们使用 SVN 作为源代码控制。

【问题讨论】:

    标签: .net visual-studio


    【解决方案1】:

    我使用的方法是在 dll 项目的构建后事件中将编译后的 dll 上传到服务器中,并在我使用 dll 的项目的构建前事件中下载它们。这是我经验中最好的方法。当我使用项目引用时,偶尔会出现一些错误(据我所知,dll 代码未正确更新)。

    在这种方法中,dll 项目编码器决定何时“发布”代码。

    【讨论】:

      【解决方案2】:

      我们设置了一个内部 Nuget 服务器来处理这个问题。这是一种处理分发和版本管理的简单方法。

      【讨论】:

      • 使用内部nuget,你如何处理调试?另外,在检查 dll 是否破坏任何东西时,您是否只做一个项目?
      • 我们主要使用它来分发服务合同dll。如果您需要能够调试分布式 dll,您可以查看 Symbol Source 之类的东西。 (symbolsource.org/Public)。至于相对于其他项目的调试,重大更改是可以的,因为消费应用程序在准备好之前不会升级到新版本。如果这是一个真正的错误,希望可以得到纠正并重新部署包。
      【解决方案3】:

      我们做一些类似于 Peuczyński 的事情。我们在源代码树的根目录下有一个文件夹,我们的库程序集中的所有 dll、pdb 和 xml doc 文件都存放在其中(因此它与其他所有文件一样受版本控制)。其他项目引用那些(不直接指向 lib 项目或其 bin dll)。这允许在不中断常规解决方案的开发的情况下处理 lib 代码。只有当 lib 代码可靠时,它才会“发布”到官方 lib 文件夹(所有 dll、pdb 和 xml 都在其中)。

      允许我们同时拥有调试版本和发布版本,并让 Visual Studio 使用库代码在项目中选择合适的版本的一个小技巧是在 Libs 文件夹下有三个子文件夹,其中文件夹命名如下:$(Configuration)DebugRelease。添加对库 dll 的引用时,您总是从 $(Configuration) 文件夹中选择文件。该文件夹名称会欺骗 VS 实际使用 Debug 或 Release 文件夹中的 dll,具体取决于您正在执行的构建类型。

      【讨论】:

      • 所以你有一个像 root\lib 这样的结构,其中包含每个库 dll,在该文件夹内,有 3 个文件夹,即 root\lib\$Configuration、root\lib\Debug 和 root\ lib\Release 与 dll 和相关文件在调试和发布?
      • 使用共享调试文件夹,有什么方法可以让不同的团队开发自己的调试版本?
      • @JoshuaBarker - 是的,lib 下有 3 个文件夹,其中一个被称为“$(Configuration)”,字面意思是,包括括号。构建库时,将 dll、pdb 和 xml 文件复制到 Debug 文件夹用于调试构建和 Release 用于发布构建。其中一个的内容被复制到 $(Configuration) 只是为了让其中的东西指向 VS(但是 VS 将使用 Debug 或 Release 中的文件 - 它实际上不会使用 $(Configuration) 中的文件。我们几乎总是只使用一个共享的 Libs 文件夹来存放“黄金”代码。可以为临时特殊需要创建一个单独的 Libs 文件夹。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2010-12-22
      • 1970-01-01
      相关资源
      最近更新 更多