【问题标题】:TFS Automatically Adds Built DLLs to Source ControlTFS 自动将构建的 DLL 添加到源代码管理
【发布时间】:2009-10-06 04:51:28
【问题描述】:
  • 我有一个多项目解决方案存储在 TFS 中。
  • 每个项目都指定了单独的 Debug/Release 构建配置文件夹。
  • 主项目的 bin 文件夹“包含”在源代码管理中,因为它包含一些第三方 DLL,这些 DLL 包含在存储库中。
  • 根据 MS/TFS 最佳实践,每个引用都是“项目”引用类型。

每次构建解决方案时,VS/TFS 都会将主项目的所有构建依赖项复制到构建配置文件夹(调试/发布)和根 bin 文件夹中。当文件出现在根 bin 文件夹中时,它们会被添加到源代码管理中(或者如果由于同样的问题它们已经存在,请签出)

目前,我已经从源代码管理中删除了 bin 文件夹,但这并不理想,因为现在每个开发人员都必须维护本地 DLL,而不仅仅是从源代码管理中获取它们。

我理想的解决方案是只使用 SVN 而不是 TFS,但我被锁定在这个解决方案中。

在这种情况下,最佳做法是什么?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    如果你想在你的源代码控制中包含二进制文件(有些人会因为这样做而把你烧死)我会做以下事情:

    • 在项目中创建一个“Binaries”文件夹
    • 复制其中的依赖项
    • 在该位置添加对那些 DLLS 的引用

    然后项目文件将包含它们的相对路径,因此您可以安全地将该目录包含在源代码管理中并使其适用于所有开发人员,而无需将您的“bin”目录添加到源代码管理中。

    【讨论】:

    • 我不能完全使用这种方法,因为最终项目是一个 Web 应用程序。因此,“二进制”文件夹最终会发布到网站并公开。我采用了类似的方法,在解决方案级别添加“外部”文件夹,将二进制文件放入其中,并将它们包含在解决方案中。然后我能够添加对 DLL 的文件引用。感谢您的帮助。
    【解决方案2】:

    使用上述答案和评论中概述的解决方案后,我发现由于某种原因,在构建解决方案时没有将其中一个 DLL 复制到 bin 文件夹中。 (Copy local 设置为 true 以供参考。)DLL 被复制到构建配置文件夹中,而不是主 bin 文件夹中。它在应用程序中使用,因此依赖项检查应该选择它。就像现在一样,每当代码尝试访问此组件时都会发生运行时错误(正如缺少 DLL 所预期的那样。

    有什么想法吗?

    【讨论】:

    • 不得不回到单个 bin 文件夹(没有 Debug/Release 子文件夹),以便将所有文件复制到一个位置。
    猜你喜欢
    • 2011-06-07
    • 2017-12-07
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多