【发布时间】:2014-02-21 14:31:38
【问题描述】:
我正在与以下情况作斗争:
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 时,是否有人知道什么会导致构建失败,尽管根本没有警告和错误?
【问题讨论】:
-
你可以增加 VS 的详细程度。转到
Tools,Options,Projects And Solutions, Build And Run,看看最后两个组合框。 -
这仅适用于 MSBuild; devenv 的详细程度(命令行:
devenv.com /build "Debug|x64" "....project.sln")无法更改。不幸的是,每次使用 CA inside VS2012 运行构建都会成功。 -
那为什么不使用MSBuild呢?
-
MSBuild 还有其他缺陷,例如从 VS2012 内部和通过 MSBuild 构建时,构建会有所不同,从而导致常量“重建”。如果我没记错的话,多核编译也存在问题。 但是您的想法很好,我可以使用 MSBuild 进一步调查该问题。事实上,我可以用“诊断输出”重现错误。现在正在挖掘数千行......
-
找到了——通过阅读大量冗长的输出...
标签: c# visual-studio-2012 build code-analysis