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:
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
doMsbuild\fxcoptask.dll
Msbuild \ Microsoft.CodeAnalysis.Cele
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>
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
doMsbuild\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>
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:Zainstaluj Microsoft Build Tools 2015 na maszynie build.
Zainstaluj Microsoft Visual C++ 2015 Redistributable Update 3 , zarówno x86, jak i x64, na maszynie.
-
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\\"
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.Skopiuj
%programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis
do tego samego miejsca na maszynie.Z Global Assembly Cache (C:\Windows\Microsoft.NET\assembly\GAC_MSIL_NameOfTheAssembly_) komputera, w którym VS2015 jest zainstalowany, Kopiuj
Microsoft.VisualStudio.CodeAnalysis.dll
iMicrosoft.VisualStudio.CodeAnalysis.Sdk.dll
(Upewnij się, że biblioteki DLL są w wersji 14.0!). Albo skopiuj doC:\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:
- potrzebny jest cały katalog
Static Analysis Tools
, a nie tylko podkatalog FxCop. - zamiast zagnieżdżając podfolder Msbuild pod FxCop, musisz umieścić go w oryginalnej lokalizacji.
- kopiowanie plików
msdia120.dll
iamd64\msdia140.dll
do katalogu FxCop wydaje się niepotrzebne, dopóki zainstalowany jest program redystrybucyjny Visual C++ 2015. - brak modyfikacji związanych z FxCop w pliku projektu ( * .csproj).
- brak
Custom.CodeAnalysis.targets
pliku.
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
doMsbuild\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: -)
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).
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