一个构建的输出包含在另一个构建中
-
18-09-2019 - |
题
将一个构建的输出作为二进制文件包含在另一个构建中的正确方法是什么?
假设我有一个名为 CompanyName.Domain (我的域层)的解决方案。我将其设置为构建,并且每晚都会构建。
现在我想添加一个名为 SomeProject.Web 的解决方案。我想将 CompanyName.Domin 中的二进制文件包含到我的解决方案的对等级别的 Binaries 文件夹中。然后,项目 SomeProjects.Web 对 Binaries\CompanyName.Domain.dll 的引用将起作用。
这样做的最佳实践是什么?我知道有人说他们正在尝试通过分支来做到这一点。我是一个完全的“源代码控制”新手。但这听起来有些不对劲。
解决方案
就像达里尔,我们使用我们从引用二进制文件“二进制”文件夹。我们的“库”建立公正XCOPY结果进了二进制文件的位置,所以如果我们要更新的库,我们只是检查出的二进制文件,构建和检查他们一次。
这使我们能够分享我们的所有内部库(以及我们使用任何第三方库)从一个单一的标准化的位置,和所有的库可以预建,节省不必建立他们我们的开发人员,如果他们没有真正改变任何在库。
注意只引用发布版本的库(我们有这个唯一例外的是,我们有这些条件编译进入调试调试助手库只依据,我们必须,否则所有引用它的调试版本我们的调试编译出即使在调试版本的程序!)
最后一点:避免分支,除非没有合理的替代
其他提示
我公司通过创建一个“参考”的文件夹来保存所有必要建立外部引用的程序集的.dll文件,如bin文件夹犯规实际上得到源代码控制下保存的这一点。
我们使用 TFS 依赖关系复制器, ,它可以在项目构建后将文件复制到 TFS 中的任何项目。它没有真正出色的文档,但在设置后它似乎可以完成它应该做的事情。
博客文章 使用 TFS Team Build 实施依赖关系复制 建议设置一个分支场景来帮助跟踪哪些项目正在使用哪些依赖项,这对我来说也很有意义。
我的过程类似于其他海报的。
说我有两个项目,叫他们CoreProject和AppProject。 CoreProject共享。 AppProject有一个叫做SharedBinaries文件夹。这是在所有的组件引用指向。
我给CoreProject TFSBuild脚本被配置成执行以下操作:
- 获得最新
-build掉落到放置区(类似于\\ SERVER \悬浮窗\ CoreProjectBuildNameAndNumber)
-drop被复制到位于下落区的文件夹(类似\\ SERVER \悬浮窗\最新\ CoreProject)
有AppProject的TFSBuild脚本被配置成执行以下操作:
- 获得最新
在SharedBinaries夹- 检查出的文件
这\\ SERVER - 复制文件\悬浮窗\最新\ CoreProject
-build
-drop下降区(类似于\\ SERVER \悬浮窗\ AppProjectBuildNameAndNumber)
- 如果构建成功构建被复制到一个文件夹拖放区(类似于\\ SERVER \悬浮窗\最新\ AppProject)和SharedBinaries中的文件
被检查- 如果生成失败复制到SharedBinaries的文件具有结帐撤消。
我发现这工作的很好。 AppProject总是从CoreProject最新位建筑,所以我们马上知道是否有重大更改。通过具有SharedBinaries签入TFS我可以得到特定的版本,并运行与CoreProject当时中使用的相同的DLL的代码。此外,我只需要获得最新的和我的本地机器与最新位建设也是如此。