在重构时,在一些程序集周围移动等等。我在Visual Studio中编译了一个解决方案并返回了一条错误消息:“FxCop退出时出现错误代码512”。除了这个错误之外,构建似乎很好。
任何人都知道这实际上意味着什么?我可以从哪里开始寻找解决方法?将FailOnError设置为false不是我想要关闭的路径。
答案 0 :(得分:6)
其他答案都在正确的轨道上,但错过了一小部分。
为了从命令行运行FxCop,我必须执行以下操作:
FxCopCmd.exe /f:<Assembly.dll> /o:<OutputFileName> /verbose
FxCopCmd是MSBuild Task使用的。如果缺少程序集,它将返回错误代码512,即使程序集不需要运行。请参阅以下FxCop消息:
无法找到间接引用的程序集“Newtonsoft.Json,Version = 4.0.2.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”。 分析不需要此程序集,但分析结果可能不完整。此程序集由以下引用:Removed.dll。
添加对该dll的引用,然后错误代码消失。
答案 1 :(得分:5)
我找到了解决方案。这是因为我引用了一个更高版本的程序集,并且FxCop正在抱怨它,警告CA0060进一步下降。解决方案是编辑FxCopCmd.exe.config文件并更改
<add key="AssemblyReferenceResolveMode" value="StrongName" />
到
<add key="AssemblyReferenceResolveMode" value="StrongNameIgnoringVersion" />
答案 2 :(得分:1)
根据MSDN,这意味着它无法引用某些程序集。 This guy建议覆盖它(我引用他的博客):
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
)
答案 3 :(得分:1)
如果声纳运行器未找到从属装配位置,则会出现FxCop错误代码512: 要解决此错误,您必须在Sonar-Runner中设置 assemblyDependencyDirectories 属性。它的值应该是以逗号分隔的路径模式列表,以找到可以找到依赖项程序集的目录。
这些路径可以是绝对路径或相对路径,起点是csproj文件所在的文件夹。此外,特殊键$(SolutionDir)
可用于构建相对于解决方案的根文件夹的路径(即sln文件所在的位置)。
例如:$(SolutionDir)/**/libs
(而不是$(SolutionDir)/**/libs/*.dll
)
例如:sonar.fxcop.assemblyDependencyDirectories=$(SolutionDir)/**/libs,$(SolutionDir)/**/Debug
详细解决和解决更多声纳跑步者错误click here。
答案 4 :(得分:0)
查找额外信息的第一个地方是XML报告文件 - 通常在最后附近有一些有用的信息。
如果不这样,我在这种情况下使用的另一种技术是在FxCop GUI中进行相同的查询;当它无法解析程序集引用时,会弹出一个对话框,要求您指向相关的程序集。知道它是哪个程序集使得添加额外的目录路径变得更加容易。
答案 5 :(得分:0)
不确定你是否还在寻找解决方案,但通常对我有用的是添加fxcop cmdline-option / d:{dir-of-random-assemblies}这实际上告诉fxcop查看该附加目录组件。在我看来,添加对不需要它的项目的引用是一个坏主意。 这也是一种解决问题的非黑客方式。
http://msdn.microsoft.com/en-US/library/bb429449(v=vs.80).aspx