1

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

假设我有一个名为 CompanyName.Domain(我的域层)的解决方案。我将它设置为构建,并且每晚构建。

现在我想添加一个名为 SomeProject.Web 的解决方案。而且我想将 CompanyName.Domin 中的二进制文件包含在我的解决方案的对等级别的 Binaries 文件夹中。然后项目 SomeProjects.Web 对 Binaries\CompanyName.Domain.dll 的引用将起作用。

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

4

4 回答 4

2

就像 Daryl 一样,我们使用“二进制”文件夹来引用二进制文件。我们的“库”构建只是将结果 xcopy 到二进制文件位置,所以如果我们想更新库,我们只需检查二进制文件,构建,然后再次签入。

这允许我们从一个标准化位置共享我们所有的内部库(以及我们使用的任何 3rd 方库),并且我们所有的库都可以预先构建,如果我们的开发人员实际上没有更改任何内容,则无需构建它们库。

注意只引用你的库的发布版本(我们唯一的例外是我们有一个调试助手库,它有条件地编译到调试版本中,我们必须引用它的调试版本,否则我们所有的调试都是即使在调试版本中也从程序中编译出来!)

最后一点:除非没有合理的选择,否则避免分支。

于 2009-07-20T13:32:29.410 回答
0

我的公司通过创建一个“参考”文件夹来保存构建外部引用程序集所需的所有 .dll 文件来做到这一点,因为 bin 文件夹实际上并没有保存在源代码管理下。

于 2009-07-20T13:19:37.473 回答
0

我们使用TFS Dependency Replicator,它可以在项目构建后将文件复制到 TFS 中的任何项目。它没有真正出色的文档,但在您设置好它之后,它似乎做了它应该做的事情。

博客文章使用 TFS Team Build 实现依赖复制建议设置一个分支方案来帮助跟踪哪些项目正在使用哪些依赖项,这对我来说也很有意义。

于 2009-07-20T13:33:11.487 回答
0

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

假设我有两个项目,分别称为 CoreProject 和 AppProject。CoreProject 是共享的。AppProject 有一个名为 SharedBinaries 的文件夹。这是所有程序集引用指向的地方。

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

- 获取最新信息

-Build Drop to drop zone(类似于\\SERVER\DropZone\CoreProjectBuildNameAndNumber)

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

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

- 获取最新信息

-签出 SharedBinaries 文件夹中的文件

-从 \\SERVER\DropZone\Latest\CoreProject 复制文件

-建造

-Drop to drop zone(类似于\\SERVER\DropZone\AppProjectBuildNameAndNumber)

- 如果构建成功,则将构建复制到文件夹放置区(类似于 \\SERVER\DropZone\Latest\AppProject)并签入 SharedBinaries 中的文件

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

我发现这非常有效。AppProject 始终使用 CoreProject 的最新版本进行构建,因此我们可以立即知道是否有重大更改。通过将 SharedBinaries 签入 TFS,我可以获得特定版本并使用当时使用的 CoreProject 中的相同 dll 运行代码。此外,我只需要获取最新版本,我的本地机器也正在使用最新版本构建。

于 2009-07-24T05:27:10.170 回答