.Net Framework 项目上的 Visual Studio 代码分析

Posted

技术标签:

【中文标题】.Net Framework 项目上的 Visual Studio 代码分析【英文标题】:Visual Studio Code Analysis on .Net Framework Projects 【发布时间】:2021-06-24 11:46:24 【问题描述】:

我正在尝试通过 Nuget 为现有的 .Net Framework 4.72 Web 应用程序启用代码分析。坦率地说,文档让我对要安装哪些软件包感到困惑。

我已经通过 nuget 安装了 Microsoft.CodeAnalysis.NetAnalyzers

以下是我的 csproj 文件:

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    ...
    <EnableNETAnalyzers>true</EnableNETAnalyzers>
    <AnalysisMode>AllEnabledByDefault</AnalysisMode>

这段代码加载有问题,但我只列出了以下两项:

warning CA2237: Add [Serializable] to ParseException as this type implements ISerializable
warning CA1001: Type 'Repository' owns disposable field(s) '_context' but is not disposable

还有其他要加载的包吗?

【问题讨论】:

如果您安装了Microsoft.CodeAnalysis.NetAnalyzers NuGet 包,则不应将EnableNETAnalyzers 属性添加到您的项目文件或Directory.Build.props 文件中。安装 NuGet 包并将EnableNETAnalyzers 属性设置为true 时,会生成生成警告。详情请看这篇文章:docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/… 【参考方案1】:

如果您看到CA*** 诊断,那么它正在工作。

您可以通过“依赖项”树(展开分析器节点)在您的项目中打开更多诊断。

此外,您必须将此PackageReference 和相关属性添加到解决方案中的每个项目。您可能希望在 Directory.Build.props 文件中执行此操作。

为什么您认为应该查看更多诊断信息?

【讨论】:

【参考方案2】:

答案在 .Net Framework 项目的 References\Analyzers 节点中。 我可以验证 Microsoft.CodeAnalysis.NetAnalyzers 的存在。 规则现在默认为最小,这意味着我的应用中只有 2 个问题。

右键Analyzers|Open Active Ruleset...,可以自定义规则。

它没有帮助这个遗留项目有点不稳定。我必须创建一个新项目并引入分析器。

【讨论】:

以上是关于.Net Framework 项目上的 Visual Studio 代码分析的主要内容,如果未能解决你的问题,请参考以下文章

.NET 4.5 Framework 上的 WiX 检查总是返回一个值?

Microsoft 是不是仍支持 .NET Framework 上的 ASP.NET Core?

PowerShell 脚本返回机器上的 .NET Framework 版本?

powershell 获取安装在PC / Server上的最新版本的.NET Framework

Windows XP 上的 .Net Framework 4.0

C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6