visual-studio - 团队 build 现在痛苦地缓慢

标签 visual-studio tfs msbuild tfsbuild

我们在实现 Team Foundation Build Server 时遇到了性能问题,而且我对如何加快速度没有任何想法。我们已经添加了一些 PropertyGroup 元素来提高几个步骤(SkipClean、SkipLabel、SkipInitializeWorkspace)的性能,但我认为我们需要进行重大的重组来解决问题。这是我们的设置:

  • 我们有大约 40 个 Web 应用程序,每个应用程序都非常不同,但运行了一堆共享程序集
  • 这些 Web 应用程序中的每一个都有自己的解决方案;
  • 这些 Web 应用程序中的每一个都引用了大约 10 到 25 个共享程序集;
  • 存在一个包含所有解决方案的构建定义,这些解决方案在每次登记到主干时触发;

  • 这是我们遇到的基本问题
  • 在构建期间,它将构建每个共享程序集的引用次数,而不是构建一次并用于每个应用程序
  • drop 目录的文件复制时间非常慢。它必须通过网络共享并且不会采用本地路径。
  • 每进行这么多次构建,一个或多个输出文件就会被“锁定”,即使编译正常也会导致构建中断。
  • 另一件事 - 我也尝试过单独的构建定义,但这样做也会强制在获取最新版本上获取另一个工作区。我宁愿让构建服务器包含一个版本的主干来构建。

  • 在过去的几个月里,我们已经屈服于昏昏欲睡并忽略了这个问题,但现在构建时间超过一个小时到一个半小时。

    我正在考虑学习和切换到巡航控制的想法,以获得更好的控制。有人不同意吗?

    非常感谢任何帮助。谢谢!

    最佳答案

    所以这就是我所做的,我已经把构建时间缩短到 9 分钟。对于我正在编译的项目数量,我很好。

  • 创建了一个包含所有共享库和所有网站的解决方案。这一步有很多额外的工作,因为我必须修复一堆遗留代码或以其他方式存储在多个地方的引用。
  • 最终节省最多时间的是对所有输出文件执行文件系统移动而不是网络复制。由于我们的放置位置实际上位于构建服务器上,这是有道理的。

  • 要执行移动,我只需覆盖 TFSBuild.proj 文件中的 CoreDropBuild 目标:
    <Target Name="CoreDropBuild"
            Condition=" '$(SkipDropBuild)'!='true' and '$(IsDesktopBuild)'!='true' "
            DependsOnTargets="$(CoreDropBuildDependsOn)" >
                 <Exec Command="move $(BinariesRoot)\Release d:\BuildOutput\$(BuildNumber)\Release"/>    
    </Target>
    

    关于visual-studio - 团队 build 现在痛苦地缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297084/

    相关文章:

    c# - MSB0001 : Internal MSBuild Error: refCount should not be less than 1

    c# - 用鼠标移动图像 wpf c#

    visual-studio-2010 - Visual Studio 2010 和 2008 混合开发环境可能吗?

    html - <form> <asp> 或外部的标题

    testing - 手动测试用例中的自定义参数

    visual-studio - TFS 分支与合并

    regex - MSBuild FileUpdate 目标的 ReplacementText 字符串中的双引号出现问题

    visual-studio - 使用 GitExtensions 时如何区分当前文件

    tfs - VSCODE和TFVC如何连接?

    c# - 如何混淆 Xamarin 生成的 .apk 中的 DLL?