在生成代理上运行代码分析(FxCop>10),而不安装Visual Studio

在FxCop 10之后,微软停止为FxCop提供单独的安装程序。
在安装Visual Studio 2013/2015/2017后,目前只能运行代码分析(FxCop 12.0/14.0/15.0)。
但是,我们坚决不在构建代理上安装VisualStudio(然后安装需要与我们在开发人员计算机上的安装保持同步)

那么,我该如何让FxCop 12.0/14.0/15.0在构建代理上工作,最好不要安装其他任何东西?不过,我接受在源代码管理中添加一些二进制文件和msbuild文件。
否则:是否有方法仅使用Visual Studio 2013/2015/2017安装程序安装FxCop

注意:我们使用Teamcity作为构建服务器

答复

由于有多个针对特定环境和FxCop版本的有效答案,为了便于访问,我冒昧地将它们链接到这里:

  • FxCop 15.0(Visual Studio 2017)
  • FxCop 14.0(Visual Studio 2015)
  • FxCop 12.0(Visual Studio 2013)
  • 声纳库贝

有关FxCop 14.0/VS2015,请参见此答案


在不安装Visual Studio 2013的情况下运行FxCop 12.0

好的,我已经花了6个小时,现在它开始工作了。
我已经向源代码管理添加了所有必要的可执行文件、DLL和msbuild目标

以下是我必须添加到源代码管理中的文件:
(请考虑这可能违反某些许可协议)

(源代码管理)\dev\tools\FxCop
│
├[amd64]
│   │
│   └msdia120.dll
├[引擎]
│   │
│   ├内省分析引擎.dll
│   └PhoenixAnalysisEngine.dll
├[Msbuild]
│   │
│   ├fxcoptask.dll
│   ├Microsoft.CodeAnalysis.Targets
│   ├Microsoft.VisualStudio.CodeAnalysis.dll
│   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
├[储存库]
│   │
│   ├[兼容性]
│   │   │
│   │   ├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
├[规则]
│   │
│   ├DataflowRules.dll
│   ├DesignRules.dll
│   ├GlobalizationRules.dll
│   ├互操作性规则.dll
│   ├可维护性规则.dll
│   ├MobilityRules.dll
│   ├NamingRules.dll
│   ├PerformanceRules.dll
│   ├PortabilityRules.dll
│   ├ReliabilityRules.dll
│   ├SecurityRules.dll
│   ├SecurityTransparencyRules.dll
│   └UsageRules.dll
├[Xml]
│   │
│   ├CodeAnalysisReport.xsl
│   ├FxCopReport.xsl
│   └VSConsoleOutput.xsl
├体系结构-msil.dll
├代码分析.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

复制如下:

  • 来自的整个FxCop安装文件夹内容

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

  • >P>VisualStudio 2013 C++ ReDIST,或其他任何地方:
    (另请参见法律信息)将msdia120 x86和x64复制到:

    msdia120.dll(874 KiB)

    amd64\msdia120.dll(1.07 MiB)

  • 从安装VS2013的计算机的全局程序集缓存(C:\Windows\Microsoft.NET\Assembly\GAC\U MSIL\\程序集名称\)中,将以下DLL复制到:
    (请确保DLL的版本为12.0!)

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

  • %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis到的所有文件

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Targets

(此外,您需要适当的Windows(7.1/8.1)SDK来构建安装在构建代理上的.net 4.0/4.5应用程序)

此外,我们还必须调整项目msbuild文件,如下所示:

&lt--必须在导入csharp目标之前导入代码分析目标,以便导入正确的代码分析目标--&燃气轮机;
<Import Project=“$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets”/>
<导入项目=“$(MSBuildToolsPath)\Microsoft.CSharp.targets”/>

这就是Custom.CodeAnalysis.targets包含的内容:

<PropertyGroup>
<!--代码分析设置--&燃气轮机;
<代码分析文化>恩美&lt/代码分析文化>
<!--更改此选项,使其指向您的规则集或将其完全删除-->
<CodeAnalysisRuleSet&gt$(SourcesDir)自定义规则集&lt/CodeAnalysisRuleSet>
<!--这必须引用将FxCopCommand.exe(以及其他FxCop文件和目录…)复制到-->的源代码管理目录;
<CodeAnalysisPath&gt$(ToolsDir)FxCop\&lt/CodeAnalysisPath>
<!--这必须指向将fxcoptask.dll、Microsoft.CodeAnalysis.Targets、Microsoft.VisualStudio.CodeaAnalysis.dll和Microsoft.VisualStudio.CodeaAnalysis.Sdk.dll复制到-->的源代码管理目录;
<代码分析目标&gt$(CodeAnalysisPath)Msbuild\Microsoft.CodeAnalysis.Targets&lt/代码分析目标>
&lt/PropertyGroup>
<!--根据您的意愿进行配置-->
<PropertyGroup条件=“$(配置)”==“发布”>
<代码分析处理警告ASERRORS>假&lt/代码分析处理警告ASERRORS>
<运行码分析>正确&lt/运行码分析>
&lt/PropertyGroup>
<!--向TeamCity报告代码分析结果-->
<Target Name=“ReportCodeAnalysisResults”AfterTargets=“RunCodeAnalysis”条件=“$(RunCodeAnalysis)”==“true”和“$(IsRunningOnTeamCity)”==“true”>
<消息文本=“##团队城市[importData type='FxCop'路径='$(CodeAnalysisLogFile)]”重要性=“高”/>
&lt/目标>
&lt/项目>

发表评论