WORKAROUND: AD0001 Analyzer 'Microsoft.AspNetCore.Mvc.Analyzers.TopLevelParameterNameAnalyzer' threw an exception
Hello folks! This is just a quick blog post to show a workaround to https://github.com/dotnet/aspnetcore/issues/14723 (couldn't comment there because the msftbot locked the issue as resolved and limited the conversation to collaborators). I'm currently building a .NET 5 WebAPI project, that references Application Insights between other dependencies, causing that when building the project I'm getting a lot errors like the one below:
CSC : warning AD0001: Analyzer 'Microsoft.AspNetCore.Mvc.Analyzers.TopLevelParameterNameAnalyzer' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'.
As described in the GitHub thread, the cause is because we are mixing dependencies of 5.0 and 2.2 core versions.
The proposed workaround in the thread is to completely disable the Code Analysis, but I wanted to find a less dramatic approach.
Workaround
When checking the rules on the Microsoft.AspNetCore.Mvc.Analyzers, found just these 5 rules on the 2.2 assembly:
My approach was to just try disable these rules and allow all the others to run. But surprise, when testing disabling the rules, seems that the one causing the "TopLevelParameterNameAnalyzer" exception was the MVC1004.
Here is the quick workaround:
- Add a new item to the WebAPI project
- In the search box add "editorconfig" and then select the "editorconfig File (.NET)". Use the ".editorconfig" as name for the file
- Under the [*.{cs,vb}] section, add the rule "dotnet_diagnostic.MVC1004.severity = none" to disable this rule, and save the file
- Build the project and voilà, problem solved! I continue getting other code analysis warnings, but not this one.
Hope this helps!