Ejecución de Análisis de código (FxCop> 10) en el agente de compilación sin instalar Visual Studio


Después de FxCop 10 Microsoft dejó de enviar un instalador separado para FxCop. Oficialmente, actualmente solo se puede ejecutar análisis de código (FxCop 12.0 / 14.0 / 15.0) después de instalar Visual Studio 2013 / 2015 / 2017. Sin embargo, somos firmes en no instalar Visual Studio en los agentes de compilación (la instalación debe mantenerse sincronizada con lo que tenemos en los equipos de desarrollo, etc.).).

Entonces, ¿cómo voy a conseguir FxCop 12.0 / 14.0 / 15.0 para trabajar en un agente de compilación, preferiblemente sin necesidad de instalar nada más? Sin embargo, aceptaría agregar algunos binarios y archivos msbuild al control de código fuente. De lo contrario: ¿Hay una manera de instalar solo las cosas de FxCop usando Visual Studio 2013 / 2015 / 2017 ¿instalador?

Nota: estamos usando Teamcity como servidor de compilación.

Respuestas

Como hay múltiples respuestas válidas para entornos específicos y versiones de FxCop, me he tomado la libertad de vincularlas aquí para un acceso más fácil:

Author: BatteryBackupUnit, 2014-02-12

5 answers

Para FxCop 14.0 / VS2015 ver esta respuesta


Ejecute FxCop 12.0 sin instalar Visual Studio 2013

Bien, he invertido 6 horas y ahora está funcionando. He añadido todos los ejecutables necesarios, DLL y objetivos msbuild al control de código fuente.

Estos son los archivos que tuve que agregar al control de código fuente: (Por favor considere que esto podría violar algunos acuerdos de licencia)

(source control)\dev\tools\FxCop
│
├[amd64]
│   │
│   └msdia120.dll
├[Engines]
│   │
│   ├IntrospectionAnalysisEngine.dll
│   └PhoenixAnalysisEngine.dll
├[Msbuild]
│   │
│   ├fxcoptask.dll
│   ├Microsoft.CodeAnalysis.Targets
│   ├Microsoft.VisualStudio.CodeAnalysis.dll
│   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
├[Repository]
│   │
│   ├[Compatibility]
│   │   │
│   │   ├Desktop2.0.xml
│   │   ├Desktop2.0SP1.xml
│   │   ├Desktop2.0SP2.xml
│   │   ├Desktop3.0.xml
│   │   ├Desktop3.0SP1.xml
│   │   ├Desktop3.0SP2.xml
│   │   ├Desktop3.5.xml
│   │   └Desktop3.5SP1.xml
│   └system32.bin
├[Rules]
│   │
│   ├DataflowRules.dll
│   ├DesignRules.dll
│   ├GlobalizationRules.dll
│   ├InteroperabilityRules.dll
│   ├MaintainabilityRules.dll
│   ├MobilityRules.dll
│   ├NamingRules.dll
│   ├PerformanceRules.dll
│   ├PortabilityRules.dll
│   ├ReliabilityRules.dll
│   ├SecurityRules.dll
│   ├SecurityTransparencyRules.dll
│   └UsageRules.dll
├[Xml]
│   │
│   ├CodeAnalysisReport.xsl
│   ├FxCopReport.xsl
│   └VSConsoleOutput.xsl
├Architecture-msil.dll
├CodeAnalysis.dll
├CustomDictionary.xml
├FxCopCmd.exe
├FxCopCmd.exe.config
├FxCopCommon.dll
├FxCopSdk.dll
├Microsoft.Cci.dll
├Microsoft.VisualStudio.CodeAnalysis.Common.dll
├Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll
├Microsoft.VisualStudio.CodeAnalysis.dll
├Microsoft.VisualStudio.CodeAnalysis.Interop.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml
├msdia120.dll
├mssp7en.dll
├mssp7en.lex
├phx.dll
└Runtime-vccrt-win-msil.dll

Copiarlos como sigue:

  • Todo el contenido de la carpeta de instalación de FxCop de

    %programfiles(x86)%\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop

  • Desde Visual Studio 2013 C++ redist, o cualquier otro lugar: (véase también información legal) copia msdia120 x86 y x64 a:

    Msdia120.dll (874 KiB)

    Amd64\msdia120.dll (1.07 MiB)

  • Desde la Caché de Ensamblaje Global (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\_NameOfTheAssembly_\) de un equipo donde está instalado VS2013, copie las siguientes DLL a: (Asegúrese de que las DLL son versión 12.0 !)

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

  • Todos los archivos de %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis a

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Objetivos

(Además, necesita el SDK de Windows (7.1 / 8.1) apropiado para compilar la aplicación. net 4.0 / 4.5 instalada en el agente de compilación)

Además tuvimos que ajustar el archivo msbuild del proyecto como sigue:

<!--Must import code analysis target before importing csharp targets, so that the correct code analysis targets gets imported. -->
<Import Project="$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets"/>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

Y esto es nuestra Costumbre.CodeAnalysis.los objetivos contienen:

  <PropertyGroup>
    <!-- Code analysis settings. -->
    <CodeAnalysisCulture>en-US</CodeAnalysisCulture>

    <!-- change this so it points to your ruleset or remove it entirely -->
    <CodeAnalysisRuleSet>$(SourcesDir)Custom.ruleset</CodeAnalysisRuleSet>

    <!-- this must refer to the source control directory where you copied FxCopCommand.exe (and the rest of the FxCop files and directories...) to -->
    <CodeAnalysisPath>$(ToolsDir)FxCop\</CodeAnalysisPath>

    <!-- this must refer to the source control directory where you copied fxcoptask.dll, Microsoft.CodeAnalysis.Targets, Microsoft.VisualStudio.CodeaAnalysis.dll and Microsoft.VisualStudio.CodeaAnalysis.Sdk.dll to -->
    <CodeAnalysisTargets>$(CodeAnalysisPath)Msbuild\Microsoft.CodeAnalysis.Targets</CodeAnalysisTargets>
  </PropertyGroup>
  <!-- configure this according to your wishes -->

  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
    <RunCodeAnalysis>true</RunCodeAnalysis>
  </PropertyGroup>

  <!-- Report code analysis results to TeamCity -->
  <Target Name="ReportCodeAnalysisResults" AfterTargets="RunCodeAnalysis" Condition="'$(RunCodeAnalysis)' == 'true' And '$(IsRunningOnTeamCity)' == 'true'">
    <Message Text="##teamcity[importData type='FxCop' path='$(CodeAnalysisLogFile)']" Importance="High" />
  </Target>

</Project>
 51
Author: BatteryBackupUnit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-16 00:17:48

!! Para FxCop 12.0 / VS2013 ver esta respuesta !!

Ejecute FxCop 14.0 sin instalar Visual Studio 2015

Requisitos previos:

  • MSBuild 14.0 Install > Instalar Microsoft Build Tools 2015
  • Visual C++ Redistribuible para Visual Studio 2015 x86 (la versión x86 siempre es necesaria, dependiendo de la versión x64 también puede ser necesaria. Si falta el mensaje de error puede ser críptico, para ejemplo System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.CodeAnalysis.Interop.dll' or one of its dependencies. The specified module could not be found.). En lugar de instalar toda la lista, también podría copiar las DLL necesarias por separado, pero en este punto no se cuáles son necesarias. Es bastante complicado y requiere mucho tiempo descubrir cuáles faltan exactamente.

Dependiendo de lo que quieras construir:

  • SDK de Windows apropiado, por ejemplo SDK de Windows 10
  • . net SDK / targets apropiados (. NET Framework 4.6 SDK está incluido en Windows 10 SDK)

Archivos para agregar al Control de Código Fuente

Estos son los archivos que tuve que agregar al control de código fuente: (Por favor considere que esto podría violar algunos acuerdos de licencia)

(source control)\tools\FxCop14
│
├[Engines]
│   │
│   ├IntrospectionAnalysisEngine.dll
│   └PhoenixAnalysisEngine.dll
├[Msbuild]
│   │
│   ├fxcoptask.dll
│   ├Microsoft.CodeAnalysis.Targets
│   ├Microsoft.VisualStudio.CodeAnalysis.dll
│   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
├[Repository]
│   │
│   ├[Compatibility]
│   │   │
│   │   ├Desktop2.0.xml
│   │   ├Desktop2.0SP1.xml
│   │   ├Desktop2.0SP2.xml
│   │   ├Desktop3.0.xml
│   │   ├Desktop3.0SP1.xml
│   │   ├Desktop3.0SP2.xml
│   │   ├Desktop3.5.xml
│   │   └Desktop3.5SP1.xml
│   └system32.bin
├[Rules]
│   │
│   ├DataflowRules.dll
│   ├DesignRules.dll
│   ├GlobalizationRules.dll
│   ├InteroperabilityRules.dll
│   ├MaintainabilityRules.dll
│   ├MobilityRules.dll
│   ├NamingRules.dll
│   ├PerformanceRules.dll
│   ├PortabilityRules.dll
│   ├ReliabilityRules.dll
│   ├SecurityRules.dll
│   ├SecurityTransparencyRules.dll
│   └UsageRules.dll
├[x64]
│   │
│   └msdia140.dll (1349 KB)
├[Xml]
│   │
│   ├CodeAnalysisReport.xsl
│   ├FxCopReport.xsl
│   └VSConsoleOutput.xsl
├Architecture-msil.dll
├CodeAnalysis.dll
├CustomDictionary.xml
├FxCopCmd.exe
├FxCopCmd.exe.config
├FxCopCommon.dll
├FxCopSdk.dll
├Microsoft.Cci.dll
├Microsoft.VisualStudio.CodeAnalysis.Common.dll
├Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll
├Microsoft.VisualStudio.CodeAnalysis.dll
├Microsoft.VisualStudio.CodeAnalysis.Interop.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml
├msdia140.dll (1057 KB)
├mssp7en.dll
├mssp7en.lex
├phx.dll
└Runtime-vccrt-win-msil.dll

Cópielos de la siguiente manera:

  • Todo el contenido de la carpeta de instalación de FxCop desde

    %programfiles(x86)%\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\FxCop

  • Desde Visual Studio 2015 C++ redist, o cualquier otro lugar: (véase también información legal) copia msdia140 x86 y x64 a:

    Msdia140.dll (1057 KiB)

    Amd64\msdia140.dll (1349 KiB)

  • Desde la Caché de Ensamblaje Global (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\_NameOfTheAssembly_\) de un equipo donde está instalado VS2015, copie las siguientes DLL a: (Asegúrese de que los archivos DLL son la versión 14.0 !)

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

  • Todos los archivos de %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis a

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Objetivos

Además ajusté el archivo msbuild del proyecto (*.csproj) como sigue (Pista: me estoy desviando ligeramente de la forma en que lo hice anteriormente con VS2013. No es porque FxCop 14 funcione de manera diferente, sino porque de esta manera puedo incluir fxcop por un paquete nuget y usar la funcionalidad estándar de nuget para .destinos de importación de archivos a .csproj):

<!-- Microsoft.CSharp.targets import is contained in csproj by default. This just goes to show the sequence -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

<!-- now this must be added -->
<Import Project="$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets"/>

Y esto es lo que nuestro Personalizar.CodeAnalysis.los objetivos contienen:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Code analysis settings. -->
    <PropertyGroup>
        <!-- this must reference the path where you copied the FxCop stuff to -->
        <FxCopDir>..\FxCop14\</FxCopDir> 
        <CodeAnalysisCulture>en-US</CodeAnalysisCulture>
        <CodeAnalysisRuleSet>$(SolutionDir)FxCop.ruleset</CodeAnalysisRuleSet>
        <!-- you can and should use another condition here. Otherwise code analysis will be run on every build in VS as well. -->
        <!-- in my build setup i do something like Condition=IsRunningOnTeamCity => true -->
        <RunCodeAnalysis>true</RunCodeAnalysis> 
        <CodeAnalysisTreatWarningsAsErrors Condition="'$(IsRunningOnTeamCity)' != 'true'">true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>

    <Import Project="$(FxCopDir)Msbuild\Microsoft.CodeAnalysis.Targets" />

    <Target Name="CodeAnalysisLogHeader" BeforeTargets="RunCodeAnalysis" Condition="$(RunCodeAnalysis) == 'true'">
        <Message Text="Text, Executing Code Analysis (FxCop) on $(MsBuildProjectName)" Importance="High" />
    </Target>

    <!-- Report code analysis results to TeamCity -->
    <Target Name="ReportCodeAnalysisResults" AfterTargets="RunCodeAnalysis" Condition="$(RunCodeAnalysis) == 'true' AND '$(IsRunningOnTeamCity)' == 'true'">
        <Message Text="##teamcity[importData type='FxCop' path='$(MSBuildProjectDirectory)\$(CodeAnalysisLogFile)']" Importance="High" />
    </Target>

</Project>
 36
Author: BatteryBackupUnit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-05 17:12:50

Usando FxCop para el análisis de SonarQube sin instalar Visual Studio

Si tiene habilitadas reglas FxCop en su quality profile de SonarQube, SonarQube requiere FxCop 14.0.

Estos pasos se basan en gran medida en la respuesta pendiente de @ BatteryBackupUnit:

  1. Instale Microsoft Build Tools 2015 en la máquina de compilación.

  2. Instalar Microsoft Visual C++ 2015 Redistributable Update 3, tanto x86 como x64, en la máquina de construcción.

  3. Importe el siguiente archivo de registro (actualice la letra de unidad si no es C:) en la máquina de compilación:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\WDExpress\14.0\Setup\EDev]
"StanDir"="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Team Tools\\Static Analysis Tools\\"
"FxCopDir"="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Team Tools\\Static Analysis Tools\\FxCop\\"
  1. Copie todo %programfiles(x86)%\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools (no solo el subdirectorio FxCop) en el mismo lugar de la máquina de compilación.

  2. Copie %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis al mismo lugar en la máquina de compilación.

  3. Desde la Caché de Ensamblaje Global (C:\Windows\Microsoft.NET\assembly\GAC_MSIL_NameOfTheAssembly_) de un ordenador donde VS2015 está instalado, copie Microsoft.VisualStudio.CodeAnalysis.dll y Microsoft.VisualStudio.CodeAnalysis.Sdk.dll (Asegúrese de que las DLL sean la versión 14.0!). Copie a C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis en la máquina de compilación o instálela en el GAC de la máquina de compilación.

Si ves Phx.FatalError después de todo esto - hay un último ritual... Copie vs_profiler_x64_enu.exe desde Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\Setups e instálelo en la máquina de compilación.

Desviaciones de las instrucciones de @BatteryBackupUnit:

  1. Se necesita todo el directorio Static Analysis Tools, no solo el subdirectorio FxCop.
  2. En lugar de anidando una subcarpeta de Msbuild bajo FxCop, debe colocarla en la ubicación original.
  3. Copiar los archivos msdia120.dll y amd64\msdia140.dll en el directorio FxCop parece innecesario mientras se instale el Redistributable de Visual C++ 2015.
  4. No hay modificaciones relacionadas con FxCop en el archivo de proyecto (*.csproj).
  5. No hay archivo Custom.CodeAnalysis.targets.
 8
Author: PolyTekPatrick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-12 17:55:59

Ejecute FxCop 15.0 sin instalar Visual Studio 2017

Requisitos previos:

  • MSBuild 15.0 Install > Instalar Microsoft Build Tools 2017 , es posible que también desee ver aquí
  • Visual C++ Redistribuible para Visual Studio 2017 x86 o aquí O Visual Studio 2017 con C++. ---- Nota: siempre se requiere la versión x86, dependiendo de la compilación, también se puede requerir la redist x64. Si lo es perder el mensaje de error puede ser críptico, por ejemplo System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.CodeAnalysis.Interop.dll' or one of its dependencies. The specified module could not be found.). En lugar de instalar toda la lista, también podría copiar las DLL necesarias por separado, pero en este punto no se cuáles son necesarias. Es bastante complicado y requiere mucho tiempo descubrir cuáles faltan exactamente.

Dependiendo de lo que quieras construir:

  • SDK de Windows apropiado, por ejemplo SDK de Windows 10
  • . net SDK / targets apropiados (. NET Framework 4.6 SDK es incluido en Windows 10 SDK)

Archivos para agregar al Control de Código Fuente

Estos son los archivos que tuve que agregar al control de código fuente: (Por favor considere que esto podría violar algunos acuerdos de licencia)

(source control)\tools\FxCop15
│
├[Engines]
│   │
│   ├IntrospectionAnalysisEngine.dll
│   └PhoenixAnalysisEngine.dll
├[Msbuild]
│   │
│   ├fxcoptask.dll
│   ├Microsoft.CodeAnalysis.Targets
│   ├Microsoft.VisualStudio.CodeAnalysis.dll
│   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
├[Repository]
│   │
│   ├[Compatibility]
│   │   │
│   │   ├Desktop2.0.xml
│   │   ├Desktop2.0SP1.xml
│   │   ├Desktop2.0SP2.xml
│   │   ├Desktop3.0.xml
│   │   ├Desktop3.0SP1.xml
│   │   ├Desktop3.0SP2.xml
│   │   ├Desktop3.5.xml
│   │   └Desktop3.5SP1.xml
│   └system32.bin
├[Rules]
│   │
│   ├DataflowRules.dll
│   ├DesignRules.dll
│   ├GlobalizationRules.dll
│   ├InteroperabilityRules.dll
│   ├MaintainabilityRules.dll
│   ├MobilityRules.dll
│   ├NamingRules.dll
│   ├PerformanceRules.dll
│   ├PortabilityRules.dll
│   ├ReliabilityRules.dll
│   ├SecurityRules.dll
│   ├SecurityTransparencyRules.dll
│   └UsageRules.dll
├[x64]
│   │
│   └msdia140.dll (1349 KB)
├[Xml]
│   │
│   ├CodeAnalysisReport.xsl
│   ├FxCopReport.xsl
│   └VSConsoleOutput.xsl
├Architecture-msil.dll
├CodeAnalysis.dll
├CustomDictionary.xml
├FxCopCmd.exe
├FxCopCmd.exe.config
├FxCopCommon.dll
├FxCopSdk.dll
├Microsoft.Cci.dll
├Microsoft.VisualStudio.CodeAnalysis.Common.dll
├Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll
├Microsoft.VisualStudio.CodeAnalysis.dll
├Microsoft.VisualStudio.CodeAnalysis.Interop.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml
├msdia140.dll (1057 KB)
├mssp7en.dll
├mssp7en.lex
├phx.dll
└Runtime-vccrt-win-msil.dll

Cópielos de la siguiente manera:

  • Todo el contenido de la carpeta de instalación de FxCop de

    %programfiles(x86)%\Microsoft Visual Studio\2017\ **INSERT EDITION HERE** \Team Tools\Static Analysis Tools\FxCop

  • Desde Visual Studio 2017 C++ redist (o su instalación de Visual Studio 2017, si tiene VC++ workload instalado: %ProgramFiles (x86) % \Microsoft Visual Studio \ 2017 \ \ VC \ Redist\MSVC \ 14.12.25810) o cualquier otro lugar: (véase también información legal) copia msdia140 x86 y x64 (la mía tiene la versión 14.12.25810.0) a:

    Msdia140.dll (1.12 MiB)

    Amd64\msdia140.dll (1.42 MiB)

  • Todos los archivos de %programfiles(x86)%\\Microsoft Visual Studio\2017\ **INSERT EDITION HERE** \MSBuild\Microsoft\VisualStudio\v15.0\CodeAnalysis a

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Objetivos

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

Además ajusté el archivo msbuild del proyecto (*.csproj) como sigue:

<!-- Microsoft.CSharp.targets import is contained in csproj by default. This just goes to show the sequence -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

<!-- now this must be added -->
<Import Project="$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets"/>

Y esto es nuestra Costumbre.CodeAnalysis.los objetivos contienen:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Code analysis settings. -->
    <PropertyGroup>
        <!-- this must reference the path where you copied the FxCop stuff to -->
        <FxCopDir>..\FxCop15\</FxCopDir> 
        <CodeAnalysisCulture>en-US</CodeAnalysisCulture>
        <CodeAnalysisRuleSet>$(SolutionDir)FxCop.ruleset</CodeAnalysisRuleSet>
        <!-- you can and should use another condition here. Otherwise code analysis will be run on every build in VS as well. -->
        <!-- in my build setup i do something like Condition=IsRunningOnTeamCity => true -->
        <RunCodeAnalysis>true</RunCodeAnalysis> 
        <CodeAnalysisTreatWarningsAsErrors Condition="'$(IsRunningOnTeamCity)' != 'true'">true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>

    <Import Project="$(FxCopDir)Msbuild\Microsoft.CodeAnalysis.Targets" />

    <Target Name="CodeAnalysisLogHeader" BeforeTargets="RunCodeAnalysis" Condition="$(RunCodeAnalysis) == 'true' OR $(RunCodeAnalysisOnce) == 'true'">
        <Message Text="Text, Executing Code Analysis (FxCop) on $(MsBuildProjectName)" Importance="High" />
    </Target>

</Project>

Notas para las rutas de Visual Studio:

La ruta de acceso a la instalación de visual studio es edition dependiente. Incluye Professional y Enterprise. AFAIR la community edition tiene un camino diferente, pero tampoco soporta FxCop. Correcciones bienvenidas: -)

 2
Author: BatteryBackupUnit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-05 17:11:10

Hay una manera muy simple para TFS :

En la máquina de compilación, agregue una variable de entorno: FXCOPDIR, apunte a: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop (simplemente copie esta carpeta desde su máquina de desarrollo).

En este directorio hay un archivo llamado: FxCopCmd.exe y TFS Build lo recogerá automáticamente, incluso si vs no está instalado. Es posible que necesite reiniciar el servidor una o dos veces, pero la compilación eventualmente funcionará. También deberá asegurarse de que dos DLL estén instalados en el GAC: Microsoft.VisualStudio.CodeAnalysis.dll y Microsoft.VisualStudio.CodeAnalysis.Sdk.DLL El primero se puede encontrar en el camino mencionado anteriormente, pero el segundo, la única forma en que lo conseguí es que lo agarré del gac en mi máquina de desarrollo. (puede desactivar la vista especial de la carpeta gac, modificando el registro, solo google).

 1
Author: samiboy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-29 07:50:53