Chr*_*ris 12 .net msbuild continuous-integration
我正在创建一个MSBuild文件,将我需要在构建服务器上执行的操作的一些任务合并为一步.此过程的一部分需要运行代码分析.我的问题是我已经为多个顶级项目运行代码分析,但它们对其他项目(如我们的实用程序库)具有相同的依赖性.这意味着每次代码分析都会复制Utility Library的代码分析运行.这是我的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>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何防止代码分析在同一个程序集上运行多次?
通常,我在“打包”二进制发行版后运行代码分析命令行工具。MSBuildCodeMetrics是一个“胚胎”项目,用于在构建中运行指标。
这个想法是,如果某些用户提交了一个包含太多行或太多圈复杂度的方法,则破坏构建,但该项目尚未达到这种成熟度。
无论如何,如果您想通过命令行运行指标,请尝试:
http://msdn.microsoft.com/en-us/library/bb385914.aspx
当然,您需要一些魔法将所有程序集复制到临时目录(例如您的最终包),然后基于此目录运行指标。
| 归档时间: |
|
| 查看次数: |
1945 次 |
| 最近记录: |