Uruchamianie analizy kodu (FxCop> 10) w programie build agent bez instalacji Visual Studio

Po FxCop 10 Microsoft przestał wysyłać oddzielny instalator dla FxCop. Oficjalnie można obecnie tylko uruchomić analizę kodu (FxCop 12.0 / 14.0 / 15.0) po zainstalowaniu Visual Studio 2013 / 2015 / 2017. Jednak jesteśmy nieugięci, aby nie instalować Visual Studio na agentach kompilacji (instalacja musi być zsynchronizowana z tym, co mamy na komputerach deweloperów itp.).

Więc jak mam się dostać FxCop 12.0 / 14.0 / 15.0 do pracy na budowie, wolisz bez instalowania czegokolwiek innego? Zaakceptowałbym jednak dodanie kilku plików binarnych i msbuild do kontroli źródeł. W przeciwnym razie: czy jest sposób, aby zainstalować tylko rzeczy FxCop za pomocą Visual Studio 2013 / 2015 / 2017 instalator?

Uwaga: używamy Teamcity jako serwera kompilacji.

Odpowiedzi

Ponieważ istnieje wiele poprawnych odpowiedzi dla konkretnych środowisk i wersji FxCop, pozwoliłem sobie połączyć je tutaj, aby uzyskać łatwiejszy dostęp:

Author: BatteryBackupUnit, 2014-02-12

5 answers

Dla FxCop 14.0 / VS2015 Zobacz ta odpowiedź


Uruchom FxCop 12.0 bez instalowania Visual Studio 2013

Zainwestowałem 6 godzin i teraz działa. Dodałem wszystkie niezbędne pliki wykonywalne, biblioteki DLL i cele msbuild do kontroli źródła.

To są pliki, które musiałem dodać do source control: (Proszę wziąć pod uwagę, że może to naruszać niektóre umowy licencyjne)

(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

Skopiuj je jako następuje:

  • Cała zawartość folderu instalacyjnego FxCop z

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

  • Z Visual Studio 2013 c++ redist, lub w dowolnym innym miejscu: (Zobacz także Informacje prawne) skopiuj msdia120 x86 i x64 do:

    Msdia120dll (874 KiB) Amd64 \ msdia120.dll (1.07 MiB)
  • Z Global Assembly Cache (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\_NameOfTheAssembly_\) komputera, na którym zainstalowany jest VS2013, skopiuj następujące biblioteki DLL do: (Upewnij się, że biblioteki DLL są w wersji 12.0 !)

    Msbuild \ Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild \ Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

  • Wszystkie pliki od %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis do

    Msbuild\fxcoptask.dll

    Msbuild \ Microsoft.CodeAnalysis.Cele

Do budowania aplikacji. Net 4.0 / 4.5 zainstalowanej w programie build agent potrzebne jest odpowiednie SDK Windows (7.1 / 8.1)

Dodatkowo musieliśmy dostosować plik MSBuild projektu jako następuje:

<!--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"/>
I taki jest nasz zwyczaj.CodeAnalysis.cele zawierają:
  <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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-16 00:17:48

!! Dla FxCop 12.0 / VS2013 Zobacz ta odpowiedź !!

Uruchom FxCop 14.0 bez instalowania Visual Studio 2015

Wymagania wstępne:

  • MSBuild 14.0 -- > Install Microsoft Build Tools 2015
  • Visual C++ Redistributable dla Visual Studio 2015 x86 (Wersja x86 jest zawsze wymagana, w zależności od kompilacji może być również wymagana redist x64. Jeśli go nie ma, Komunikat o błędzie może być tajemniczy, dla przykład 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.). Zamiast instalować cały redist można również skopiować niezbędne DLL oddzielnie, ale w tym momencie Nie wiem, które są potrzebne. Jest to dość trudne i czasochłonne, aby dowiedzieć się, które z nich dokładnie brakuje.

W zależności od tego, co chcesz zbudować:

  • odpowiednie Windows SDK, na przykład Windows 10 SDK
  • [18]}odpowiednie. NET SDK / cele (. NET Framework 4.6 SDK jest zawarty w systemie Windows 10 SDK)

Pliki do dodania do kontroli źródła

To są pliki, które musiałem dodać do source control: (Proszę wziąć pod uwagę, że może to naruszać niektóre umowy licencyjne)

(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

Skopiuj je w następujący sposób:

  • Cała zawartość folderu instalacyjnego FxCop z

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

  • Z Visual Studio 2015 C++ redist, lub w dowolnym innym miejscu: (Zobacz też Informacje prawne) skopiuj msdia140 x86 i x64 do:

    Msdia140dll (1057 KiB) Amd64 \ msdia140.dll (1349 KiB)
  • Z Global Assembly Cache (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\_NameOfTheAssembly_\) komputera, na którym zainstalowany jest VS2015, skopiuj następujące biblioteki DLL do: (Upewnij się, że biblioteki DLL są w wersji 14.0 !)

    Msbuild \ Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild \ Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

  • Wszystkie pliki z %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis do

    Msbuild\fxcoptask.dll

    Msbuild \ Microsoft.CodeAnalysis.Cele

Dodatkowo poprawiłem plik MSBuild projektu ( * .csproj) w następujący sposób (podpowiedź: trochę odbiegam od sposobu, w jaki wcześniej robiłem to z VS2013. To nie dlatego, że FxCop 14 działa inaczej, ale raczej dlatego, że w ten sposób mogę dołączyć fxcop przez pakiet nuget i użyć standardowej funkcjonalności nuget dla .import plików docelowych do ."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"/>

I to jest to, co nasze Na zamówienie.CodeAnalysis.cele zawiera:

<?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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-05 17:12:50

Używanie FxCop do analizy SonarQube bez instalowania Visual Studio

Jeśli masz włączone reguły FxCop w profilu jakości SonarQube, SonarQube wymaga FxCop 14.0.

[15]}te kroki są w dużej mierze oparte na zaległej odpowiedź przez @ BatteryBackupUnit:
  1. Zainstaluj Microsoft Build Tools 2015 na maszynie build.

  2. Zainstaluj Microsoft Visual C++ 2015 Redistributable Update 3 , zarówno x86, jak i x64, na maszynie.

  3. Zaimportuj następujący plik rejestru (zaktualizuj literę dysku, jeśli nie C:) na maszynie kompilacyjnej:


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. Skopiuj wszystkie %programfiles(x86)%\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools (nie tylko podkatalog FxCop) do tego samego miejsca na maszynie kompilacyjnej.

  2. Skopiuj %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis do tego samego miejsca na maszynie.

  3. Z Global Assembly Cache (C:\Windows\Microsoft.NET\assembly\GAC_MSIL_NameOfTheAssembly_) komputera, w którym VS2015 jest zainstalowany, Kopiuj Microsoft.VisualStudio.CodeAnalysis.dll i Microsoft.VisualStudio.CodeAnalysis.Sdk.dll (Upewnij się, że biblioteki DLL są w wersji 14.0!). Albo skopiuj do C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis na maszynie kompilacyjnej lub Zainstaluj w GAC maszyny kompilacyjnej.

Jeśli zobaczysz Phx.FatalError po tym wszystkim-jest jeden ostatni rytuał... Skopiuj vs_profiler_x64_enu.exe z Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\Setups i zainstaluj go na maszynie kompilacyjnej.

Odstępstwa od instrukcji @ BatteryBackupUnit:

  1. potrzebny jest cały katalog Static Analysis Tools, a nie tylko podkatalog FxCop.
  2. zamiast zagnieżdżając podfolder Msbuild pod FxCop, musisz umieścić go w oryginalnej lokalizacji.
  3. kopiowanie plików msdia120.dll i amd64\msdia140.dll do katalogu FxCop wydaje się niepotrzebne, dopóki zainstalowany jest program redystrybucyjny Visual C++ 2015.
  4. brak modyfikacji związanych z FxCop w pliku projektu ( * .csproj).
  5. brak Custom.CodeAnalysis.targets pliku.
 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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-12 17:55:59

Uruchom FxCop 15.0 bez instalowania Visual Studio 2017

Wymagania wstępne:

  • MSBuild 15.0 -- > Install Microsoft Build Tools 2017, możesz również zobaczyć tutaj
  • Visual C++ Redistributable dla Visual Studio 2017 x86 lub tutaj lub Visual Studio 2017 z C++. ---- Uwaga : Wersja x86 jest zawsze wymagana, w zależności od kompilacji może być również wymagana redist x64. Jeśli jest brak Komunikatu o błędzie może być tajemniczy, na przykład 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.). Zamiast instalować cały redist można również skopiować niezbędne DLL oddzielnie, ale w tym momencie Nie wiem, które są potrzebne. Jest to dość trudne i czasochłonne, aby dowiedzieć się, które z nich dokładnie brakuje.

W zależności od tego, co chcesz zbudować:

  • odpowiednie Windows SDK, na przykład Windows 10 SDK
  • odpowiednie. NET SDK / cele (. NET Framework 4.6 SDK jest zawiera pakiet Windows 10 SDK)

Pliki do dodania do kontroli źródła

To są pliki, które musiałem dodać do source control: (Proszę wziąć pod uwagę, że może to naruszać niektóre umowy licencyjne)

(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

Skopiuj je w następujący sposób:

  • Cała zawartość folderu instalacyjnego FxCop z

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

  • Z Visual Studio 2017 C++ redist (lub instalacji Visual Studio 2017, Jeśli masz zainstalowane obciążenie VC++ : %ProgramFiles (x86) % \Microsoft Visual Studio\2017\\VC\Redist\MSVC \ 14.12.25810) lub w dowolnym innym miejscu: (Zobacz także Informacje prawne) skopiuj msdia140 x86 i x64 (mój ma wersję 14.12.25810.0) do:

    Msdia140dll (1.12 MiB)

    Amd64 \ msdia140.dll (1.42 MiB)

  • Wszystkie pliki z %programfiles(x86)%\\Microsoft Visual Studio\2017\ **INSERT EDITION HERE** \MSBuild\Microsoft\VisualStudio\v15.0\CodeAnalysis do

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Cele

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

Dodatkowo poprawiłem plik MSBuild projektu ( * .csproj) w następujący sposób:

<!-- 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"/>
I taki jest nasz zwyczaj.CodeAnalysis.cele zawiera:
<?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>

Uwagi do ścieżek Visual Studio:

Ścieżka do instalacji visual studio to edycja zależny. Obejmuje profesjonalną i korporacyjną. AFAIR wersja community ma inną ścieżkę, ale nie obsługuje również FxCop. Poprawki mile widziane: -)

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-05 17:11:10

Istnieje bardzo prosty sposób na TFS :

Na maszynie kompilacyjnej dodaj zmienną środowiskową: FXCOPDIR, wskaż ją na: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop (po prostu skopiuj ten folder z maszyny deweloperskiej).

W tym katalogu znajduje się plik o nazwie: FxCopCmd.exe i TFS Build odbierze go automatycznie, nawet jeśli vs nie jest zainstalowany. Może być konieczne ponowne uruchomienie serwera raz lub dwa razy, ale Kompilacja w końcu zadziała. Musisz również upewnić się, że dwie biblioteki DLL są zainstalowane w gac: Microsoft.VisualStudio.CodeAnalysis.dll i Microsoft.VisualStudio.CodeAnalysis.Sdk.dll Pierwszy z nich można znaleźć w ścieżce, o której mowa powyżej, ale drugi, jedyny sposób, w jaki go złapałem, to to, że złapałem go z gac na mojej dev-maszynie. (możesz wyłączyć specjalny widok folderów gac, modyfikując rejestr, po prostu go 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/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-29 07:50:53