TeamCity外部引用程序集的路径

4

我一直在设置TeamCity,除了无法编译引用解决方案路径之外的程序集之外,几乎所有内容都已经完成。我们的SVN存储库结构如下:

    根目录
        库
        项目1
            主干
        项目2
            主干

项目1和项目2引用位于库中的第三方程序集。从VS2005 IDE中和调用解决方案文件上的MSBuild时,这是完全正常的,因为所有引用的HintPath都像这样:

..\..\..\Libraries\ThirdParty.dll

我遇到的问题是,当TeamCity挂掉时,针对Project 1或Project 2从SVN检出的内容会被放入内部目录中,而这些目录与HintPath给出的相对路径结构不匹配。
我该如何解决这个问题?可以通过TeamCity配置或者重新配置我的解决方案/目录结构来解决。任何一种方法都能满足我的需求。
谢谢!
3个回答

4
如果您为库创建单独的VCS根,您可以使用“checkout rules”来控制文件在目录结构中的位置,以使其与本地计算机上的结构匹配。请参考checkout rules

0
我所做的是将项目的VCS ROOT设置为顶级目录(根据您的项目结构而定)。并且分离了由TeamCity创建的默认项目vcs root。之后,您可以通过在“生成类型”中指定解决方案路径“Solution file path:*”来创建自定义构建步骤“Visual Studio(sln)”。现在它可以正确处理库引用。
这里有一个缺点,即由于vcs根位于顶级,即使与项目无关的检入也可能导致项目构建,这对于耗时的构建可能不合适。目前还没有解决方法。

0

我们建立了一个包含所有第三方dll的网络目录。然后我们将该目录映射到一个驱动器。

这样,dll就不是我们解决方案的一部分,所有项目只需调用z:\3rdParty\example.dll来获取程序集。

我的团队中有其他人实际上设置了我们的teamcity,所以我可能完全错误地理解了问题是如何解决的,或者我们最初是否真的有这个问题 :)


谢谢Gordon。不过我希望将所有内容都保留在仓库树内,所以我认为你的方法对我们来说不太合适。 - Dave Nay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接