我一直在设置TeamCity,除了能够编译VS2005解决方案之外,几乎所有工作都在使用,这些解决方案引用了解决方案路径之外的程序集。我的SVN存储库结构如下
Root Libraries Project 1 Trunk Project 2 Trunk
项目1和项目2引用位于库中的第三方程序集。这可以在VS2005 IDE中正常工作,并且在解决方案文件上调用MSBuild,因为所有引用的HintPath看起来像这样:
..\..\..\Libraries\ThirdParty.dll
我遇到的问题是,当TeamCity从SVN为项目1或项目2结账时,它会将所有内容放入与HintPath给出的相对路径结构不匹配的内部目录中。
如何通过TeamCity配置或以不同方式配置我的解决方案/目录结构来清除此问题?任何一个都能满足我的需求。
谢谢!
答案 0 :(得分:4)
如果为库创建单独的VCS根目录,则可以使用checkout rules来控制文件在目录结构中的放置位置,以使其与本地计算机上的结构匹配。
答案 1 :(得分:0)
我们为所有第三方dll设置了一个网络目录。然后我们将目录映射到驱动器。
这样dll不是我们解决方案的一部分,所有项目只需调用z:\ 3rdParty \ example.dll来获取程序集。
我团队中的其他人确实设置了我们的团队城市,所以我可能完全弄错了问题是如何实际修复的,或者我们最初是否遇到过这个问题:)
答案 2 :(得分:0)
我所做的是将项目的VCS ROOT设置为顶级目录(根据项目结构的“Root”)。并分离了teamcity创建的默认项目vcs root。在此之后,您可以通过在构建类型“Visual Studio(sln)”中指定解决方案“解决方案文件路径:*”来创建自定义构建步骤。现在它正确处理库引用。
这里有一个缺点,因为vcs root位于顶层,即使是不相关的check ins也可能导致你的项目构建,这可能不适合耗时的构建。暂时还没有解决方法。