【问题标题】:How to Configure TeamCity to Build Projects On the Fly Rather than Exporting them?如何配置 TeamCity 以动态构建项目而不是导出项目?
【发布时间】:2012-01-31 11:03:43
【问题描述】:

我有一个测试解决方案 (TestSolutionA),其中包含一个测试项目 (TestProjectA: 包含使用 NUnit 的系统测试) 并引用了另一个现有项目 (ProjectB),因为我的测试项目需要读取该项目的一些类比如 EmailHelper。

TFS 中的文件夹结构:

*Root
**Tests
***References
***TestSolutionA
****TestProjectA
**ClassLibraries
***ProjectB

References 文件夹包含 TestProjectA 使用的程序集,例如 NUnit.dll 等。

现在我已经配置了 TeamCity,以便它构建 TestSolutionA 并运行 TestProjectA 的测试。这意味着在构建 TestSolutionA 时,该解决方案中已引用的所有文件和文件夹都将检出到“检出目录”,然后构建解决方案。

问题是这个测试解决方案的构建速度很慢,因为每次它必须将 ProjectB 的所有文件和文件夹检出/导出到 TeamCity 服务器并重新构建它们,而只需要 ProjectB 的 dll,而不是全部里面的文件/类。

当涉及更多外部项目时,问题会出现更多。

在测试项目必须引用外部项目的情况下,是否有更好的解决方案来加快构建速度?例如即时构建程序集,而不是将它们检出/导出到 TeamCity 服务器。

不确定是否可行。

希望问题很清楚。

谢谢,

【问题讨论】:

    标签: testing configuration build nunit teamcity


    【解决方案1】:

    您需要做的是为 ProjectB 创建一个单独的 TeamCity 构建配置,用于构建 DLL 并将其作为工件发布。然后,您可以配置 TestSolution 构建配置,使其具有对 ProjectB DLL 的工件依赖项。这样,您的 TestSolution 构建配置根本不需要为 ProjectB 提取任何源代码。

    TeamCity 文档中的一些有用链接是:

    http://confluence.jetbrains.net/display/TCD65/Build+Artifact

    http://confluence.jetbrains.net/display/TCD65/Artifact+Dependencies

    【讨论】:

    • 谢谢,但是如何构建 .csproj 文件? TeamCity 只能根据其 UI 来构建 .sln 文件。我的意思是我不确定如何在没有解决方案的情况下构建项目。
    • 你不能只为 ProjectB 创建一个新的解决方案吗?
    • 不幸的是没有,但我检查了“Visual Studio (sln)”运行器类型也可以构建 .csproj 文件,所以我创建了一个新步骤来构建它,现在它构建了 dll。剩下的唯一部分是将这些 dll 移动到我的 TestSolutionA 的 bin 文件夹中。不知道怎么做。
    • @William,听起来你应该熟悉 MSBuild,它可以帮助解决这两个问题(编译没有解决方案的项目,以及移动文件)
    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2012-02-23
    • 2016-09-23
    • 2014-06-05
    相关资源
    最近更新 更多