0

像大多数人一样,我们使用第三方库。许多有我们保留在我们的 VCS 中的源代码。

目前,如果这些库被更新,我们需要手动拉取源代码并重建二进制文件。

我正在尝试找到一种方法来从使用它们的各种解决方案中引用它们,以便在您拉取依赖项目时自动从源代码管理中提取它们,并在它们过时时自动构建它们。能够使用提供的源调试它们也很好。

我遇到的第一个问题是库与依赖项目不在同一个解决方案根目录中。例如。

\Libraries
 \External
  \Lib1
   Lib1.sln
\Products
 \Product1
  Product1.sln

尝试添加Lib1.csproj到我的Product1解决方案会给我警告:

您尝试添加到源代码管理的项目可能会导致其他源代码管理用户难以打开此解决方案或获取其更新版本。要避免此问题,请从解决方案中其他源代码控制项目的绑定根 (C:\depot\Products\Products1) 下方的位置添加项目。

如果我忽略这一点,那么我可以正确设置构建依赖项,但它仍然不允许一次性拉出整个源代码树。

我想知道其他人如何设置第三方库,尤其是在有源代码的情况下。(我们正在使用 Perforce,但我想这个问题与任何 VCS 相关)

4

1 回答 1

1

解决这个问题的一种方法是将所有将要重用的模块/ 3rdparty 软件放到一个单独的位置(仓库),例如“//shared”或类似的。

产品(SCMS / perforce 中的树)可以通过将所需模块映射到工作区来“链接”它们。实际上,您可以通过客户端视图来做到这一点。如果您有很多人在开发多种产品,您将需要一种简单的机制来正确地为产品设置个人工作区(无需开发人员手动设置其客户端视图)。实现这一目标的一种可能性是一个小的自写工具/脚本,它设置工作空间并根据位于产品根目录中的模板准备个人客户端视图,该模板定义“//shared”库中的哪些模块需要映射到客户端工作区中的哪个位置。

多年来,我们一直在使用这种做法,而且效果很好。危险在于客户端视图会变得非常复杂。

于 2012-10-01T07:13:58.450 回答