2009-07-20 125 views
1

在另一个构建中包含一个构建的输出作为二进制的正确方法是什么?一个构建包含在另一个中的输出

可以说我有一个名为CompanyName.Domain(我的领域层)的解决方案。我建立了它作为一个构建,它每晚建立。

现在我想添加一个名为SomeProject.Web的解决方案。我想用我的解决方案将来自CompanyName.Domin的二进制文件包含到同级别的二进制文件夹中。然后项目SomeProjects.Web参考Binaries \ CompanyName.Domain.dll将工作。

这样做的最佳做法是什么?我知道有人说他们试图用分支来做到这一点。我是一个完全的“源代码控制”newb。但是,这听起来不对。

回答

2

就像达里尔,我们使用我们从引用二进制文件“二进制”文件夹中。我们的“库”只是将结果拷贝到二进制文件的位置,所以如果我们想更新库,我们只需检查二进制文件,编译并再次检查它们。

这使我们能够从一个标准化的位置共享我们所有的内部库(以及我们使用的任何第三方库),并且我们所有的库都可以预先构建,从而使我们的开发人员不必构建它们改变库中的任何东西。

请注意只引用你的库的发布版本(我们唯一的例外是我们有一个调试助手库,它只是有条件地编译成调试版本,我们必须引用它的调试版本我们的所有调试编译出来的方案,即使在调试版本)最后

一个注意:避免分支,除非没有合理的替代。

0

我公司通过创建一个“参考”的文件夹来保存所有必要建立外部引用的程序集的.dll文件,如bin文件夹犯规实际上得到源代码控制下保存的做到这一点。

+0

这就是我的意思......只是一个不同的名字。文件夹二进制文件与相关解决方案位于同一根级别。它不是bin文件夹。但是,如何将该.dll自动添加到(并重新添加)到References文件夹? – BuddyJoe 2009-07-20 13:30:52

+0

就像Jason上面。他几乎击中了头部。 – Daryl 2009-07-21 18:20:59

0

我的过程与其他海报类似。

说我有两个项目,叫他们CoreProject和AppProject。 CoreProject是共享的。 AppProject有一个名为SharedBinaries的文件夹。这是所有组装参考指向的地方。

我对CoreProject TFSBuild脚本配置为执行以下操作:

- 获得最新

-build跌落到放置区(类似于\\ SERVER \悬浮窗\ CoreProjectBuildNameAndNumber)

-drop被复制到放置区中的文件夹(类似于\\ SERVER \ DropZone \ Latest \ CoreProject)

AppProject的TFSBuild脚本被配置为执行以下操作:

- 获得最新

- 检查出在SharedBinaries文件夹中的文件从\\ SERVER \悬浮窗\最新\ CoreProject

- 复制文件

-build

-drop下降区(类似\\ SERVER \ DropZone \ AppProjectBuildNameAndNumber)

- 如果构建成功,构建将被复制到文件夹放置区(类似于\\ SERVER \ DropZone \ Latest \ AppP并且在SharedBinaries中的文件被检查

- 如果构建失败,则复制到SharedBinaries的文件将取消签出。

我发现这个方法非常好。 AppProject始终使用CoreProject中的最新版本构建,所以我们马上就知道是否存在突变。通过将SharedBinaries签入TFS,我可以获得特定的版本,并使用当时使用的CoreProject中相同的dll运行代码。此外,我只需要获得最新的信息,并且我的本地计算机也在使用最新版本进行构建。

相关问题