虽然没有警告或错误,但在设置CodeAnalysisTreatWarningsAsErrors时VS2012构建失败

时间:2014-01-29 16:33:12

标签: c# visual-studio-2012 build code-analysis

我正在努力应对以下情况:

VS2012解决方案中有许多项目(准确地说是14个)。 这些项目没有代码分析警告和错误。

我想为构建服务器使用CodeAnalysisTreatWarningsAsErrors开关,因此如果出现任何CA问题,构建将失败。这是通过将环境变量“CodeAnalysisTreatWarningsAsErrors”设置为“true”来实现的。代码分析将此标志作为参数使用(请参阅C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets)。

从FinalBuilder构建解决方案(在构建服务器或我的机器上)或从命令行(通过devenv.com)构建解决方案时,VS2012输出告诉我没有代码分析警告且根本没有错误 - 但构建失败,没有其他理由。

我将问题分为以下部分:

  • 这是一个导致失败的单一项目。如果我删除它的二进制文件,可以始终重现错误(此项目使用与其他项目完全相同的.targets文件和其他环境内容)
  • 如果我将CodeAnalysisTreatWarningsAsErrors设置为false,则构建成功(再次,0警告和0错误)。

VS2012的输出非常差(根据我的研究),没有办法增加devenv.com的详细程度。

看起来像这样:

1>------ Skipped Build: Project: xxxxxx_Test, Configuration: Debug x64 ------
1>Project not selected to build for this solution configuration 
2>------ Build started: Project: xxxx.xxxx.Modules.Base, Configuration: Debug x64 ------
2>  xxxx.xxxx.Modules.Base -> X:\xxx\x64\Debug\xxxx.xxxx.Modules.Base.dll
2>  Running Code Analysis...
2>  Code Analysis Complete -- 0 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 12 up-to-date, 1 skipped ==========

FinalBuilder添加返回值:

devenv.com returned Error code : 1

是否有任何想法只有在将CodeAnalysisTreatWarningsAsErrors设置为 true 时才会导致构建失败,尽管根本没有警告和错误?

1 个答案:

答案 0 :(得分:1)

解决了问题:

这条MSBuild输出线让我很好奇,最终导致了正确的位置:

The indirectly-referenced assembly '...dll' could not be found. This assembly is not required for analysis, however, analysis results could be incomplete. This assembly was referenced by: ...dll

实际上,有一个第三方软件的集合与引用的版本不匹配。

显然,这根本没有产生任何错误或警告,但是,在激活CodeAnalysisTreatWarningsAsErrors时,代码分析认为最好返回错误。

因此,解决方案是(临时)使用具有不同详细级别的MSBuild('诊断'太多,'详细'给了我仍然大约29.800行代码分析该单个程序集项目,包括缺少的程序集名字),挖掘那些东西,在大海捞针找到针......

感谢 dario_ramos 让我指向正确的方向!