新手问题:我在TeamCity中有2个C#项目,称之为A和B. A包含对B.dll的引用。 B很好。但是,A无法构建,因为它找不到B:无法找到程序集“B”
看起来很简单:如何在构建服务器上告诉我的项目A从哪里找到B \ bin \ Release中的二进制文件?
答案 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。