在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 -
从安装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
>P>VisualStudio 2013 C++ ReDIST,或其他任何地方:
(另请参见法律信息)将msdia120 x86和x64复制到:
msdia120.dll(874 KiB)
amd64\msdia120.dll(1.07 MiB)
(此外,您需要适当的Windows(7.1/8.1)SDK来构建安装在构建代理上的.net 4.0/4.5应用程序)
此外,我们还必须调整项目msbuild文件,如下所示:
<--必须在导入csharp目标之前导入代码分析目标,以便导入正确的代码分析目标--&燃气轮机;
<;Import Project=“$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets”/>;
<;导入项目=“$(MSBuildToolsPath)\Microsoft.CSharp.targets”/>;
这就是Custom.CodeAnalysis.targets包含的内容:
<;PropertyGroup>;
<;!--代码分析设置--&燃气轮机;
<;代码分析文化>;恩美</代码分析文化>;
<;!--更改此选项,使其指向您的规则集或将其完全删除-->;
<;CodeAnalysisRuleSet>$(SourcesDir)自定义规则集</CodeAnalysisRuleSet>;
<;!--这必须引用将FxCopCommand.exe(以及其他FxCop文件和目录…)复制到-->;的源代码管理目录;
<;CodeAnalysisPath>$(ToolsDir)FxCop\</CodeAnalysisPath>;
<;!--这必须指向将fxcoptask.dll、Microsoft.CodeAnalysis.Targets、Microsoft.VisualStudio.CodeaAnalysis.dll和Microsoft.VisualStudio.CodeaAnalysis.Sdk.dll复制到-->;的源代码管理目录;
<;代码分析目标>$(CodeAnalysisPath)Msbuild\Microsoft.CodeAnalysis.Targets</代码分析目标>;
</PropertyGroup>;
<;!--根据您的意愿进行配置-->;
<;PropertyGroup条件=“$(配置)”==“发布”>;
<;代码分析处理警告ASERRORS>;假</代码分析处理警告ASERRORS>;
<;运行码分析>;正确</运行码分析>;
</PropertyGroup>;
<;!--向TeamCity报告代码分析结果-->;
<;Target Name=“ReportCodeAnalysisResults”AfterTargets=“RunCodeAnalysis”条件=“$(RunCodeAnalysis)”==“true”和“$(IsRunningOnTeamCity)”==“true”>;
<;消息文本=“##团队城市[importData type='FxCop'路径='$(CodeAnalysisLogFile)]”重要性=“高”/>;
</目标>;
</项目>;