【问题标题】:Treating warnings as errors in Visual Studio 2019 for build but NOT intellisense在 Visual Studio 2019 中将警告视为错误进行构建但不是智能感知
【发布时间】:2020-02-18 16:09:04
【问题描述】:

我刚开始在我的 csproj 文件中使用<TreatWarningsAsErrors>true</TreatWarningsAsErrors>,当我弄乱了一些代码时,我发现自己花了很多额外的时间在所有不同的红线上徘徊以找到那个实际上是一个错误,因为我想优先修复错误而不是警告。如果智能感知警告仍然可以在文本编辑器中显示为绿线,那就太好了,但也会导致构建失败。

我认为我可以通过将 /warnaserror 传递给 MSBuild 来使测试/暂存/生产构建失败,但我确实希望 VS 中的开发构建在出现任何警告时也会失败。

有人知道这是否可能吗?我在 Visual Studio 2019 中使用 .NET Framework 4.8(但也想知道它是否可以在 .NET Core 中使用)。

非常感谢!

【问题讨论】:

    标签: .net visual-studio msbuild intellisense compiler-warnings


    【解决方案1】:

    我发现自己花了相当多的额外时间在所有东西上徘徊 不同的红线以找到实际上是错误的红线,因为我 希望优先修复错误而不是警告。这将是 如果智能感知警告仍然可以显示为绿线,那就太好了 文本编辑器,但也会导致构建失败。

    据我所知,Intellisense 对捕捉错误 非常敏感,一旦构建的警告变成错误,intellisense 就会将其捕捉为错误。

    有人知道这是否可能吗?我正在使用 .NET Framework 4.8 (但也有兴趣知道 .NET Core 中是否可行) 在 Visual Studio 2019 中。

    编辑 1

    因此,不可能在这种状态下区分警告和真正的错误。而且在这种状态下,Intellisense 不会区分它们。

    作为替代方案,你可以试试我的建议:

    建议

    您可以创建一个名为 Production 的新配置,该配置不同于 DebugRelease。在这个解决方案中,第一步是找到真正的错误,第二步是将警告变成错误,以便优化代码。

    首先,您可以使用DebugRelease在此模式下构建您的项目,它可以捕捉到真正的构建错误,以便您可以优先修复这些错误。

    第二,将Configuration改为Production。此阶段通常称为最终产品发布阶段,构建过程会将警告转化为错误,以便您发现错误代码并对其进行优化。

    真正的问题是如何创建生产配置:

    步骤

    1)点击菜单Build-->Configuration Manager-->点击Active solution configuration中的new-->创建一个名为Production的新配置。

    2) 卸载项目并在 Production 下添加<TreatWarningsAsErrors>true</TreatWarningsAsErrors>,如下所示:

    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Production|AnyCPU'">
        <DebugSymbols>true</DebugSymbols>
        <OutputPath>bin\Production\</OutputPath>
        <DefineConstants>DEBUG;TRACE</DefineConstants>
        <DebugType>full</DebugType>
        <PlatformTarget>AnyCPU</PlatformTarget>
        <LangVersion>7.3</LangVersion>
        <ErrorReport>prompt</ErrorReport>
        <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
        <Prefer32Bit>true</Prefer32Bit>
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
      </PropertyGroup>
    

    一句话,首先将Configuration改为DebugRelease,然后构建项目,找到真正的错误进行修复。二、将Configuration改成Production,构建项目找到警告错误进行修复。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-08
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 2019-09-06
      • 2021-10-28
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多