我正在努力应对以下情况:
VS2012解决方案中有许多项目(准确地说是14个)。 这些项目没有代码分析警告和错误。
我想为构建服务器使用CodeAnalysisTreatWarningsAsErrors开关,因此如果出现任何CA问题,构建将失败。这是通过将环境变量“CodeAnalysisTreatWarningsAsErrors”设置为“true”来实现的。代码分析将此标志作为参数使用(请参阅C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets)。
从FinalBuilder构建解决方案(在构建服务器或我的机器上)或从命令行(通过devenv.com)构建解决方案时,VS2012输出告诉我没有代码分析警告且根本没有错误 - 但构建失败,没有其他理由。
我将问题分为以下部分:
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 时才会导致构建失败,尽管根本没有警告和错误?
答案 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 让我指向正确的方向!