12
我創建一個MSBuild文件的,我需要我的生成服務器上做進一步事一些任務結合起來。這個過程的一部分需要運行代碼分析。我的問題是,我已經爲多個頂級項目運行代碼分析,但它們每個都與我們的實用程序庫等其他項目具有相同的依賴關係。這意味着每次代碼分析都重複執行Utility Library的代碼分析。這裏是我的MSBuild文件:的MSBuild文件來運行代碼分析不重疊
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Dev</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisTargets>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\CodeAnalysis\Microsoft.CodeAnalysis.targets</CodeAnalysisTargets>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
<DefineConstants>TRACE;DEBUG;CODE_ANALYSIS</DefineConstants>
<BuildInParallel>true</BuildInParallel>
<WebProjectTargets>Clean;Build;Package</WebProjectTargets>
<OtherProjectTargets>Clean;Build</OtherProjectTargets>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
</PropertyGroup>
<Target Name="Build">
<!-- Web Projects -->
<MSBuild
Projects="$(MSBuildProjectDirectory)\Source\WebProjects\WebApp1\WebApp1.csproj"
Properties="
Configuration=$(Configuration);
PackageLocation=$(MSBuildProjectDirectory)\Packages\WebApp1.zip;
RunCodeAnalysis=$(RunCodeAnalysis);
CodeAnalysisTargets=$(CodeAnalysisTargets);
CodeAnalysisTreatWarningsAsErrors=$(CodeAnalysisTreatWarningsAsErrors);
StyleCopTreatErrorsAsWarnings=$(StyleCopTreatErrorsAsWarnings);
DefineConstants=$(DefineConstants);
BuildInParallel=$(BuildInParallel);
GenerateSerializationAssemblies=$(GenerateSerializationAssemblies);
"
Targets="$(WebProjectTargets)" />
<MSBuild
Projects="$(MSBuildProjectDirectory)\Source\WebProjects\WebApp2\WebApp2.csproj"
Properties="
Configuration=$(Configuration);
PackageLocation=$(MSBuildProjectDirectory)\Packages\WebApp2.zip;
RunCodeAnalysis=$(RunCodeAnalysis);
CodeAnalysisTargets=$(CodeAnalysisTargets);
CodeAnalysisTreatWarningsAsErrors=$(CodeAnalysisTreatWarningsAsErrors);
StyleCopTreatErrorsAsWarnings=$(StyleCopTreatErrorsAsWarnings);
DefineConstants=$(DefineConstants);
BuildInParallel=$(BuildInParallel);
GenerateSerializationAssemblies=$(GenerateSerializationAssemblies);
"
Targets="$(WebProjectTargets)" />
<MSBuild
Projects="$(MSBuildProjectDirectory)\Source\WebProjects\Administrator\Administrator.csproj"
Properties="
Configuration=$(Configuration);
PackageLocation=$(MSBuildProjectDirectory)\Packages\Administrator.zip;
RunCodeAnalysis=$(RunCodeAnalysis);
CodeAnalysisTargets=$(CodeAnalysisTargets);
CodeAnalysisTreatWarningsAsErrors=$(CodeAnalysisTreatWarningsAsErrors);
StyleCopTreatErrorsAsWarnings=$(StyleCopTreatErrorsAsWarnings);
DefineConstants=$(DefineConstants);
BuildInParallel=$(BuildInParallel);
GenerateSerializationAssemblies=$(GenerateSerializationAssemblies);
"
Targets="$(WebProjectTargets)" />
<MSBuild
Projects="$(MSBuildProjectDirectory)\Source\OtherProjects\Service\Service.csproj"
Properties="
Configuration=$(Configuration);
RunCodeAnalysis=$(RunCodeAnalysis);
CodeAnalysisTargets=$(CodeAnalysisTargets);
CodeAnalysisTreatWarningsAsErrors=$(CodeAnalysisTreatWarningsAsErrors);
StyleCopTreatErrorsAsWarnings=$(StyleCopTreatErrorsAsWarnings);
DefineConstants=$(DefineConstants);
BuildInParallel=$(BuildInParallel);
GenerateSerializationAssemblies=$(GenerateSerializationAssemblies);
"
Targets="$(OtherProjectTargets)" />
</Target>
</Project>
任何想法,如何防止代碼分析在這種情況下,在同一組件上運行超過一次?
你真的需要在每次進行構建時運行代碼分析?我通常在構建的二進制文件上運行它,因爲它確實會減慢構建速度,我懷疑它需要比每天更頻繁地運行。 – 2013-04-09 07:55:24
我每次開發構建時都會運行代碼分析(如果代碼發生更改,每兩個小時),因爲我們希望在需要更正代碼時收到通知。如果我改變這個,我會修改我的設置,所以我有一個計劃,每小時運行一次代碼分析,一個計劃每兩個小時開發一次。 – Chris 2013-04-09 14:03:40
你能和/ V運行構建:診斷和追捕這一行:'目標「RunCodeAnalysis:'它應該能顯示在未來幾行什麼樣的輸入,什麼輸出是如果你清理掉,你可能會在生成文件夾。保持'* .lastcodeanalysissucceeded'周圍鋪設,因爲他們確定目標外的日期。 – rene 2013-10-20 12:54:08