【问题标题】:Get TFS Build Server to obtain stylecop.settings file in root folderGet TFS Build Server 获取根目录下的 stylecop.settings 文件
【发布时间】:2013-08-22 13:12:14
【问题描述】:

我们在一个集合中有多个 TFS 项目。

每个 TFS 项目都有许多 Visual Studio 解决方案,每个 sln 文件都在它自己的文件夹中。

每个 TFS 项目在 TFS 项目的根目录中都有一个项目特定的 StyleCop.settings 文件。

但是,当我们为每个解决方案创建构建时,我们使构建仅获取包含解决方案的文件夹(按照 Microsoft 的建议,以提高构建性能)。因此,我们错过了 TFS 项目根目录中的 StyleCop.settings 文件。

因此,我的问题是:

如何将我的设置文件应用于构建解决方案,并满足以下条件

  1. 所有 StyleCop.settings 文件都必须存储在源代码管理中。
  2. StyleCop.settings 文件的数量必须保持在最低限度(理想情况下,每个 TFS 项目不超过 1 个)。
  3. 只有解决方案文件夹应该在构建时从 TFS 下载。
  4. 构建机器和开发人员的机器不应使用环境变量或类似的变量进行修改。
  5. 每个解决方案都包含多个 VS 项目(即多个 *.csproj 文件)。

附录 1. 文件夹结构

为了参考/清楚,这里是我上面描述的文件夹结构的一个例子。 TFS 构建只会检查 Application1 或 Application2 文件夹(取决于它构建的应用程序)。

C:\Source\
  TfsProject1\
    stylecop.settings
    Application1\
      Application1.sln
    Application2\
      Application2.sln

附录 2. StyleCop NuGet

请注意,我们使用 NuGet 包 StyleCop.MsBuild 将 StyleCop 集成到 TFS - 它直接安装在每台机器上,因此任何依赖它的解决方案都已失效 :)

【问题讨论】:

    标签: visual-studio-2012 msbuild tfsbuild stylecop


    【解决方案1】:

    在您的构建模板 Xaml 文件中,编辑并添加一个新的“下载文件”活动。在此活动中,将源位置作为 stylecop 服务器位置,将目标作为您的“源目录”或您想要的位置。这将确保在每次构建期间下载文件,无论使用哪种解决方案。

    您不必为此维护额外的 msbuild 文件。

    【讨论】:

    • 终于有机会掌握构建工作流程,我同意这是最好的方法。干杯:)
    【解决方案2】:

    我最终想出的方法是为每个解决方案(并作为解决方案项添加)定义一个新的 MSBuild 文件,仅用于 CI 构建服务器。这定义了一个有 2 个工作的目标:

    1. 获取 StyleCop 文件
    2. 运行正常的构建。

    它看起来像这样(这个包括一个 CI 目标和一个发布目标 - 显然你可以有尽可能多的目标,只要你的方法是合理的)。

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <TF>"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\ide\tf.exe"</TF>
        <TFFile>$/Project1/Settings.StyleCop</TFFile>
        <OutputFile>.\StyleCop.Settings</OutputFile>
        <TFCollection>http://mytfsserver:8080/tfs/DefaultCollection</TFCollection>
      </PropertyGroup>
    
      <Target Name="CI" DependsOnTargets="DownloadStyleCopSettings">
        <!-- This target is intended for a Continuous integration build -->
        <MSBuild Projects="Application1.sln" Properties="Configuration=Debug">
        </MSBuild>
      </Target>
      <Target Name="Release" DependsOnTargets="DownloadStyleCopSettings">
        <!-- This target is intended for a Release build.
             It produces a Release (not Debug) build, and will increment Version numbers. 
         -->
      </Target>
    
      <!-- This target downloads the StyleCop settings file from the TFS Project root. -->
      <Target Name="DownloadStyleCopSettings">
        <Exec Command="$(TF) view /collection:$(TFCollection) $(TFFile) /noprompt /output:$(OutputFile)" />
      </Target>
    </Project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      相关资源
      最近更新 更多