Nic*_* W. 10 c# fxcop visual-studio-2010
在重构时,在一些程序集周围移动等等.我在Visual Studio中编译了一个解决方案并找回了一条错误消息:"FxCop退出时出现错误代码512".除了这个错误之外,构建似乎很好.
有谁知道这实际上意味着什么?我可以从哪里开始寻找解决方法?将FailOnError设置为false不是我想要关闭的路径.
其他答案都在正确的轨道上,但错过了一小部分.
为了从命令行运行FxCop,我必须执行以下操作:
FxCopCmd.exe /f:<Assembly.dll> /o:<OutputFileName> /verbose
Run Code Online (Sandbox Code Playgroud)
FxCopCmd是MSBuild Task使用的.如果组件丢失,它将返回错误代码512,即使组件不需要运行它也是如此.请参阅以下FxCop消息:
无法找到间接引用的程序集"Newtonsoft.Json,Version = 4.0.2.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed".分析不需要此装配,但分析结果可能不完整.此程序集由以下引用:Removed.dll.
添加对该dll的引用,然后错误代码消失.
我找到了解决方案.这是因为我引用了一个更高版本的程序集,并且FxCop正在抱怨它,警告CA0060进一步下降.解决方案是编辑FxCopCmd.exe.config文件并进行更改
<add key="AssemblyReferenceResolveMode" value="StrongName" />
Run Code Online (Sandbox Code Playgroud)
至
<add key="AssemblyReferenceResolveMode" value="StrongNameIgnoringVersion" />
Run Code Online (Sandbox Code Playgroud)
根据MSDN,这意味着它无法引用某些程序集。这个人建议用(我引用自他的博客)来覆盖它:
The following can be placed directly into the Post-build event field in your project's properties.
<YOUR FXCOP COMMAND>
IF 512 == %ERRORLEVEL% (
echo postbuildevent:fxcop warning FXCOP:FxCopCode analysis was unable to complete.
SET ERRORLEVEL = 0
)
Run Code Online (Sandbox Code Playgroud)