引用另一个项目中的二进制文件

时间:2010-06-04 09:08:04

标签: teamcity

新手问题:我在TeamCity中有2个C#项目,称之为A和B. A包含对B.dll的引用。 B很好。但是,A无法构建,因为它找不到B:无法找到程序集“B”

看起来很简单:如何在构建服务器上告诉我的项目A从哪里找到B \ bin \ Release中的二进制文件?

2 个答案:

答案 0 :(得分:13)

您可以通过创建'Artifacts'和工件依赖项来完成此操作。

如果项目A依赖于项目B,那么您可以使用如下的工件路径在项目B上创建工件:

bin/Release/B.dll

然后在项目A上,您使用以下路径设置B上的工件依赖项:

B.dll

并将目标路径设置为项目A期望找到B.dll的位置,例如

./Libs

您可以使用以下语法执行其他很酷的操作,例如将所有工件自动存档到zip中:

bin/Release/*.dll => B.zip

并通过以下方式访问它们:

B.zip!B.dll

所有这些路径都与构建目录相关,因此非常简单,您无需担心TeamCity guid文件夹或使用绝对路径。

答案 1 :(得分:0)

你遇到的问题是Teamcity在它自己的临时目录中运行每个构建,因为这是一个随机生成的名称,你不能直接从一个到另一个设置引用。

通常,您会编写一个构建脚本,以正确的顺序构建A和B,并让Teamcity运行该构建脚本。 (由于您使用的是C#,MSBuild非常适合这种情况。)

另一种方法是在构建结束时将B.dll复制到已知位置(例如c:\currentbuild)并让A始终从此处引用它。您可以在Teamcity中设置构建依赖关系,以便在重建B时也重建A。