警告视为错误没有影响(Treat Warnings as Errors has no effect)

2019-07-18 07:58发布

在我的项目在Visual Studio中的设置,我已“警告视为错误”为“全部”。 警告电平被设置为4。我通过故意引入违反CA1305代码测试这一点,但它建立(和重建)在成功,返回一个警告。 我希望的是,构建会失败,并会返回一个错误。 我的理解是错误的?

Answer 1:

代码分析使用不同的机制来警告视为错误。 有作这样的处理代码分析警告,添加一个新的代码分析规则集到您的解决方案。 要做到这一点,右击你的解决方案,并选择“添加新项...”。 搜索“规则集”,然后选择添加新的“代码分析规则集”。 给它任何你想要的名称。

在规则集编辑器中,选择要在项目中包含的规则,并将其设为错误。 您可以选择哪些规则当作错误和警告。

在代码分析规则集的属性窗口中设置的规则集的名称和保存 。 然后打开Analyze->Configure Code Analysis for Solution的菜单项。

选择你的“作为错误”规则集为您的项目和应用。



Answer 2:

你可以在这里一样。贵的csproj文件使用“CodeAnalysisTreatWarningsAsErrors”属性:

http://blogs.msdn.com/b/codeanalysis/archive/2007/08/08/_24002800_codeanalysistreatwarningaserrors_2900_-msbuild-property.aspx

对于Visual Studio 2008中,我们增加了一个新的MSBuild属性,让您轻松处理所有代码分析警告视为构建错误。 这可能是有用的,例如,如果要强制一个代码分析的任何触发规则,而不需要单独设置此为每条规则每晚团队建设过程中打破建设。

要使用,只需将其属性添加到您的项目文件(或一个共同的目标文件),并设置为true:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    <PropertyGroup>
        [...]
        <!-- either here -->
        <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        [...]
        <!-- or here ... -->
        <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        [...]
        <!-- and here -->
        <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>
    [...]
</Project>

这可以通过使用结合<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>这将对警告StyleCop的相同的效果。



文章来源: Treat Warnings as Errors has no effect