【问题标题】:StyleCop MS Build magic? Who is calling the StyleCop target?StyleCop MS Build 魔术?谁在调用 StyleCop 目标?
【发布时间】:2011-01-21 13:10:42
【问题描述】:

在我们的项目文件中,我们使用 StyleCop 并在构建过程中运行它。我们已经修改了我们的项目文件以包含 StyleCop 目标,如下所示:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="..\..\Tools\Microsoft\StyleCop\v4.3\Microsoft.StyleCop.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
     Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->

问题是为什么会这样?谁在调用 Microsoft.StyleCop.targets 文件中定义的 StyleCop 目标?

据我所知,开始构建时唯一运行的目标是“构建”目标。我在 Microsoft.StyleCop.targets 文件之外的任何地方都找不到对“StyleCop”目标的任何引用。再说一遍,为什么要调用它?

我想知道的原因是,如果我们可以为自己的自定义任务做类似的事情会很酷。因此,我们无需编辑所有 78 个 csproj 文件,只需导入我们自己的通用目标,例如:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="Common.targets" />

然后只需在该文件中导入 StyleCop,以及需要在每个项目基础上完成的所有其他任务。

请帮助我理解。

【问题讨论】:

    标签: msbuild stylecop


    【解决方案1】:

    尤里卡!

    秘诀是 StyleCop 目标文件中的以下几行:

    <PropertyGroup>
      <BuildDependsOn>$(BuildDependsOn);StyleCop</BuildDependsOn>
      <RebuildDependsOn>StyleCopForceFullAnalysis;$(RebuildDependsOn)</RebuildDependsOn>
    </PropertyGroup>
    

    Microsoft.Common.targets 中的“构建”目标声明如下:

    <Target Name="Build"
            Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
            DependsOnTargets="$(BuildDependsOn)"
            Outputs="$(TargetPath)" />
    

    这意味着“BuildDependsOn”属性中列出的任何目标都将在构建期间被调用。这不是很好吗? :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2013-03-15
      • 2011-05-07
      • 2012-03-07
      • 1970-01-01
      相关资源
      最近更新 更多