【问题标题】:Teamcity - How to Build a multi project Visual Studio solution?Teamcity - 如何构建多项目 Visual Studio 解决方案?
【发布时间】:2014-12-16 17:40:58
【问题描述】:

我有一个包含多个项目的 Visual Studio 2013 解决方案。 (源代码在SVN中)

这是项目/解决方案结构

d:\src\Service\MyService\MyService.sln

上述解决方案包含 2 个项目。两个项目的文件路径是,

  • d:\src\Service\MyService\MyServiceProject\MyServiceProject.csproj - 为简单起见,我们称之为 - 项目 A
  • d:\src\Library\MyLibrary\MyLibraryProject\MyLibraryProject.csproj - 为简单起见,我们称之为 - 项目 B

这里,项目 Project A 有一个对项目 B 的项目引用

我已将 TeamCity 配置为使用默认 Visual Studio 构建(即,我没有自定义 MSBuild 脚本)来构建 MyService.sln。

当我在 TeamCity 中构建项目时,构建失败,提示找不到应该由项目 B 生成的 .dll 文件。

我检查了 TeamCity 工作目录,但根本没有看到 Project B 的源代码。我在这里错过了什么?

【问题讨论】:

  • 你的 cvs root 设置是什么?看起来您正在检查 A 的源而不是 B,即您的根检查了 \service 而不是 \library
  • 根 VCS 签出解决方案 (.sln)。该解决方案在其中引用了项目 A 和项目 B。但是,如您所见,项目 A 位于解决方案本身的子文件夹中,而项目 B 不在子文件夹中,而是位于完全不同的路径中。基本上,解决方案文件中对项目 B 的引用是 ..\..\Library\MyLibrary\MyLibraryProject\MyLibraryProject.csproj

标签: teamcity


【解决方案1】:

您似乎没有在 TeamCity 中正确设置 vcs 根。您的示例给出了 d:\src\Service\MyService\MyServiceProject\MyServiceProject.csprojd:\src\Library\MyLibrary\MyLibraryProject\MyLibraryProject.csproj 的文件夹结构

您需要做以下两件事之一:

如果您的项目在源代码管理中的某个公共文件夹中都有帮助,那么您需要设置您的 vcs 根目录以签出包含这两个项目的文件夹。在上面的示例中,如果这是源代码管理中的文件夹,您应该签出 \src\。

如果这不是源代码管理中的文件夹,那么您需要为构建配置设置 2 个 vcs 根目录,一个用于签出 Service,一个用于签出 Library,那么这两个项目的源代码将在构建服务器。

【讨论】:

  • 感谢您的回答,@Samholder 您的建议有所帮助。我配置了两个不同的 VCS Root,并确保工作目录路径与解决方案匹配。
猜你喜欢
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多