.net - sangria - visual studio code tutorial español pdf
Ejecución de Code Analysis(FxCop> 10) en el agente de compilación sin instalar Visual Studio (5)
Después de que FxCop 10, Microsoft dejó de enviar un instalador separado para FxCop. Actualmente, oficialmente solo se puede ejecutar el análisis de código (FxCop 12.0 / 14.0 / 15.0) después de instalar Visual Studio 2013/2015 / 2017. Sin embargo, estamos convencidos de no instalar Visual Studio en los agentes de compilación (la instalación debe mantenerse en sincronizar con lo que tenemos en las computadoras de desarrollador, etc.).
Entonces, ¿cómo puedo conseguir que FxCop 12.0 / 14.0 / 15.0 trabaje en un agente de compilación, preferiblemente sin instalar nada más? Sin embargo, aceptaría agregar algunos binarios y archivos de msbuild al control de código fuente. De lo contrario: ¿Hay una manera de instalar solo las cosas de FxCop usando el instalador de Visual Studio 2013/2015/2017?
Nota: estamos utilizando Teamcity como servidor de compilación.
Respuestas
Como hay varias 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:
- FxCop 15.0 (Visual Studio 2017)
- FxCop 14.0 (Visual Studio 2015)
- FxCop 12.0 (Visual Studio 2013)
- SonarQube
Ejecute FxCop 15.0 sin instalar Visual Studio 2017
Requisitos previos:
- MSBuild 15.0 -> Instale Microsoft Build Tools 2017 , es posible que también desee ver here
- Visual C ++ Redistributable para Visual Studio 2017 x86 o here O Visual Studio 2017 con C ++. ---- Nota : la versión x86 siempre es necesaria, dependiendo de la versión x64 redist también puede ser necesaria. Si falta, 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.
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 el redist completo, también podría copiar las DLL necesarias por separado, pero en este momento no sé cuáles son las necesarias. Es bastante complicado y lleva mucho tiempo descubrir cuáles faltan exactamente.
Dependiendo de lo que quieras construir:
- Windows SDK apropiado, por ejemplo, Windows 10 SDK
- .NET SDK / objetivos apropiados (.NET Framework 4.6 SDK se incluye 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: (Tenga en cuenta 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
Copiarlos de la siguiente manera:
todo el contenido de la carpeta de instalación de FxCop desde
%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 instalada la carga de trabajo de VC ++:% ProgramFiles (x86)% / Microsoft Visual Studio / 2017 // VC / Redist / MSVC / 14.12.25810) o cualquier otro lugar: (vea también la información legal ) copie msdia140 x86 y x64 (los míos tienen la versión 14.12.25810.0) en:
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
toMsbuild / fxcoptask.dll
Msbuild / Microsoft.CodeAnalysis.Targets
Msbuild / Microsoft.VisualStudio.CodeAnalysis.dll
Msbuild / Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
Además, ajusté el archivo msbuild del proyecto (* .csproj) de la siguiente manera:
<!-- 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 Custom.CodeAnalysis.targets contiene:
<?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:
El camino hacia la instalación de Visual Studio depende de la edición. Incluye Profesional y Empresa. AFAIR la edición comunitaria tiene una ruta diferente, pero tampoco es compatible con FxCop. Correcciones bienvenidas :-)
Uso de FxCop para el análisis de SonarQube sin instalar Visual Studio
Si tiene alguna regla FxCop habilitada en su perfil de calidad de SonarQube, SonarQube requiere FxCop 14.0.
Estos pasos se basan en gran medida en la answer sobresaliente de @BatteryBackupUnit:
Instale Microsoft Build Tools 2015 en la máquina de compilación.
Instale Microsoft Visual C ++ 2015 Redistributable Update 3 , tanto x86 como x64, en la máquina de compilación.
Importe el siguiente archivo de registro (actualice la letra de la 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//"
Copie todos los
%programfiles(x86)%/Microsoft Visual Studio 12.0/Team Tools/Static Analysis Tools
(no solo el subdirectorio FxCop) en el mismo lugar en la máquina de compilación.Copie
%programfiles(x86)%/MSBuild/Microsoft/VisualStudio/v14.0/CodeAnalysis
en el mismo lugar en la máquina de compilación.Desde la memoria caché de ensamblados global (C: / Windows / Microsoft.NET / assembly / GAC_MSIL_NameOfTheAssembly_) de una computadora donde está instalado VS2015, copie
Microsoft.VisualStudio.CodeAnalysis.dll
yMicrosoft.VisualStudio.CodeAnalysis.Sdk.dll
(asegúrese de que los DLLs son la versión 14.0!). Copie aC:/Program Files (x86)/MSBuild/Microsoft/VisualStudio/v14.0/CodeAnalysis
en la máquina de compilación o instálelo en el GAC de la máquina de compilación.
Si ve Phx.FatalError
después de todo esto, hay un último ritual ... Copiar vs_profiler_x64_enu.exe
desde Program Files (x86)/Microsoft Visual Studio 14.0/Team Tools/Performance Tools/Setups
e instalarlo en la máquina de compilación.
Desviaciones de las instrucciones de @ BatteryBackupUnit:
- Se necesita el directorio completo de
Static Analysis Tools
, no solo el subdirectorio FxCop. - En lugar de anidar una subcarpeta Msbuild bajo FxCop, debe colocarla en la ubicación original.
- Copiar los
msdia120.dll
yamd64/msdia140.dll
en el directorio FxCop parece innecesario siempre que esté instalado Visual C ++ 2015 Redistributable. - No hay modificaciones relacionadas con FxCop al archivo de proyecto (* .csproj).
- Ningún archivo
Custom.CodeAnalysis.targets
.
!! Para FxCop 12.0 / VS2013 vea esta respuesta !!
Ejecute FxCop 14.0 sin instalar Visual Studio 2015
Requisitos previos:
- MSBuild 14.0 -> Instalar Microsoft Build Tools 2015
- Visual C ++ Redistribuible para Visual Studio 2015 x86 (la versión x86 siempre es necesaria, dependiendo de la construcción x64 redist también puede ser necesaria. Si falta, 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 el redist completo, también podría copiar las DLL necesarias por separado, pero en este momento no sé cuáles son las necesarias. Es bastante complicado y lleva mucho tiempo descubrir cuáles faltan exactamente.
Dependiendo de lo que quieras construir:
- Windows SDK apropiado, por ejemplo, Windows 10 SDK
- .NET SDK / objetivos apropiados (.NET Framework 4.6 SDK se incluye 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: (Tenga en cuenta 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
Copiarlos 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
de Visual Studio 2015 C ++ redist, o en cualquier otro lugar: (también vea información legal ) copie msdia140 x86 y x64 en:
msdia140.dll (1057 KiB)
amd64 / msdia140.dll (1349 KiB)
desde la memoria caché de ensamblados global (
C:/Windows/Microsoft.NET/assembly/GAC_MSIL/_NameOfTheAssembly_/
) de una computadora donde está instalado VS2015, copie los siguientes archivos DLL a: (¡Asegúrese de que los archivos DLL sean 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
paraMsbuild / fxcoptask.dll
Msbuild / Microsoft.CodeAnalysis.Targets
Además, ajusté el archivo msbuild del proyecto (* .csproj) de la siguiente manera (Sugerencia: me estoy desviando un poco 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 use la funcionalidad estándar de nuget para la importación de archivos .targets 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 Custom.CodeAnalysis.targets contiene:
<?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>
Hay una forma muy simple para TFS :
En la máquina de compilación, agregue una variable de entorno: FXCOPDIR
, señale a: C:/Program Files (x86)/Microsoft Visual Studio 12.0/Team Tools/Static Analysis Tools/FxCop
(solo 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 deba reiniciar el servidor una o dos veces, pero la compilación eventualmente funcionará. También deberá asegurarse de que se instalen dos dll en el gac: Microsoft.VisualStudio.CodeAnalysis.dll y Microsoft.VisualStudio.CodeAnalysis.Sdk.dll La primera se puede encontrar en la ruta mencionada anteriormente, pero la última, la La única forma de conseguirlo es que lo agarré del gac en mi máquina dev. (Puede deshabilitar la vista de la carpeta gac especial, modificando el registro, simplemente buscándolo).
Para FxCop 14.0 / VS2015 vea esta respuesta
Ejecute FxCop 12.0 sin instalar Visual Studio 2013
Bueno, he invertido 6 horas y ahora está funcionando. He agregado todos los archivos ejecutables, dlls y msbuild necesarios al control de origen.
Estos son los archivos que tuve que agregar al control de código fuente: (Tenga en cuenta 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 de la siguiente manera:
todo el contenido de la carpeta de instalación de FxCop desde
%programfiles(x86)%/Microsoft Visual Studio 12.0/Team Tools/Static Analysis Tools/FxCop
desde Visual Studio 2013 C ++ redist, o cualquier otro lugar: (también vea información legal ) copie msdia120 x86 y x64 en:
msdia120.dll (874 KiB)
amd64 / msdia120.dll (1.07 MiB)
desde la memoria caché de ensamblados global (
C:/Windows/Microsoft.NET/assembly/GAC_MSIL/_NameOfTheAssembly_/
) de una computadora donde está instalado VS2013, copie los siguientes archivos DLL en: (¡Asegúrese de que los archivos DLL sean la 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
paraMsbuild / fxcoptask.dll
Msbuild / Microsoft.CodeAnalysis.Targets
(Además, necesita el SDK de Windows (7.1 / 8.1) adecuado 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 de la siguiente manera:
<!--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 lo que nuestro Custom.CodeAnalysis.targets contiene:
<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>