Visual studio 2013 FxCopCmd.exe仅在同时对多个程序集执行时显示冲突

Visual studio 2013 FxCopCmd.exe仅在同时对多个程序集执行时显示冲突,visual-studio-2013,code-analysis,fxcop,fxcopcmd,Visual Studio 2013,Code Analysis,Fxcop,Fxcopcmd,我在fxcopcmd.exe中遇到了一个非常奇怪的行为。如果仅指定一个程序集(程序集X)启动fxcopcmd.exe,则不存在冲突。但是,如果我指定解决方案的所有程序集,它会在(程序集X)中抛出大量冲突。有什么我错过的吗?请注意,在VisualStudio中使用代码分析时,即使我对所有程序集运行代码分析,也不会出现冲突 更多详细信息: 1-我们在Visual Studio 2013中使用了一个解决方案,其中包含六个大型C#项目。 2-我们使用安装VisualStudio 2013(版本12.0.

我在fxcopcmd.exe中遇到了一个非常奇怪的行为。如果仅指定一个程序集(程序集X)启动fxcopcmd.exe,则不存在冲突。但是,如果我指定解决方案的所有程序集,它会在(程序集X)中抛出大量冲突。有什么我错过的吗?请注意,在VisualStudio中使用代码分析时,即使我对所有程序集运行代码分析,也不会出现冲突

更多详细信息:

1-我们在Visual Studio 2013中使用了一个解决方案,其中包含六个大型C#项目。

2-我们使用安装VisualStudio 2013(版本12.0.21005.1)后得到的fxcopcmd.exe。

3-未检测到任何冲突的命令行命令示例:

4-检测冲突的命令行命令示例:

请注意,在Assembly1.dll中检测到100多个冲突

导致违规的规则包括:
avoidUninstantiatedInternalClass
AvoidUncalledPrivateCode
AvoidUnusedPrivateFields
typenameshouldnotmatchnamespace


所以这与不同程序集之间的关系无关。 我在TeamCity中找到的唯一能够正确实现自动化的解决方案是使用nant脚本,逐个调用不同程序集上的fxcopcmd.exe,并将结果输出到不同的文件中

欢迎任何意见


谢谢。

听起来像是
Assembly1.dll
可能具有
内部可视属性
实例,这些实例从示例4命令行中列出的其他程序集的某些子集中生成朋友程序集

当为包含朋友程序集但未包含在运行中的程序集运行FxCop时,这些规则无法判断朋友程序集中是否存在调用目标程序集中不会被调用的代码的代码,因此您可以放心(即:不标记可能是误报的冲突)。但是,当您使用一整套好友程序集运行时,规则可以做出该确定,并且您将看到标记为非公共代码的冲突,这些代码不是从程序集本身或其好友程序集内调用的


顺便说一句,您不会在Visual Studio中看到违规行为,因为它会为每个项目分别执行FxCop。

感谢您的解释。为了防止FxCopCmd.exe和VS2013代码分析之间存在任何差异,我强烈建议为每个项目分别启动FxCopCmd.exe。通过这样做,我们总能得到相同的结果!此主题可能被标记为已修复。
tools\FxCopCmd\FxCopCmd.exe /file:build\bin\Assembly1.dll /out:results.txt /ruleset:=Tools\FxCopRuleSet\CompagnyRules.ruleset /ignoregeneratedcode
tools\FxCopCmd\FxCopCmd.exe /file:build\bin\Assembly1.dll /file:build\bin\Assembly2.dll  /file:build\bin\Assembly3.dll /file:build\bin\Assembly4.dll /out:results.txt /ruleset:=Tools\FxCopRuleSet\CompagnyRules.ruleset /ignoregeneratedcode