descargar msbuild stylecop

msbuild - stylecop descargar



StyleCop MS Build magic? ¿Quién llama el objetivo de StyleCop? (1)

Eureka!

La salsa secreta son las siguientes líneas en el archivo de objetivos de StyleCop:

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

El objetivo "Build" en Microsoft.Common.targets se declara así:

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

Esto significa que cualquier objetivo enumerado en la propiedad "BuildDependsOn" se llamará durante la compilación. ¿No es lindo? :)

En nuestros archivos de proyecto, estamos utilizando StyleCop y lo estamos ejecutando durante el proceso de compilación. Hemos modificado nuestros archivos de proyecto para incluir los objetivos de StyleCop de la siguiente manera:

<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> -->

La pregunta es por qué funciona esto? ¿Quién llama al objetivo StyleCop definido en el archivo Microsoft.StyleCop.targets?

Por lo que puedo decir, el único objetivo que se ejecuta cuando se inicia la compilación, es el objetivo "Compilar". No puedo encontrar ninguna referencia al objetivo "StyleCop" en ningún lugar fuera del archivo Microsoft.StyleCop.targets. Entonces, de nuevo, ¿por qué se llama?

La razón por la que quiero saber es porque sería fantástico si pudiéramos hacer algo similar para nuestras tareas personalizadas. Entonces, en lugar de editar todos nuestros 78 archivos csproj, podríamos importar nuestro propio objetivo general como:

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

Y luego solo importa StyleCop en ese archivo, junto con todas nuestras otras tareas que deben realizarse por proyecto.

Por favor, ayúdame a entender.