为多个项目指定代码分析输出文件

Joh*_*ner 5 .net c# msbuild

我正在尝试使用MSBuild构建一个解决方案,我想为每个项目启动代码分析,并将所有输出放入某个目录.我正在运行的命令是:

msbuild.exe MySolution.sln /p:RunCodeAnalysis=True;CodeAnalysisLogFile=c:\BuildOutput\code-analysis.xml
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是代码分析会覆盖解决方案中每个项目的xml文件,因此我只获得最后一个项目的输出.有没有办法告诉MSBuild将输出附加到代码分析或为每个输出生成一个唯一的文件?

注意:我不希望用CodeAnalysisLogFile xml标签更新每个CSProj文件,但如果没有其他方法,那就是我要做的.

Nic*_*eus 4

创建或使用现有的通用“Imports.Props”文件导入,并在其中包含 CodeAnalysisLog 的定义。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <CodeAnalysisLogFile>$(OutputPath)\CodeAnalysis\$(AssemblyName).$(Platform).$(Configuration).xml</CodeAnalysisLogFile>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

然后在您的项目文件中导入这个通用的 props 文件:

<Import Project="$(PropertyOfSourceFolder)\CodeAnalysis.props" />
Run Code Online (Sandbox Code Playgroud)