Skip to content

.NET — Tier 3 — Nice to Have

Tier 3 .NET checks verify polish and advanced configuration. Scored checks are worth 1 point each. Three checks are INFO only (no score impact). These checks only run when a .sln file is detected.

Scored Checks (1 pt each)

TreatWarningsAsErrors

SlugCategory
dotnet-warnings-as-errorsCode Quality

Treats all compiler warnings as errors, enforcing a zero-warning policy. Prevents warnings from accumulating and being ignored.


Deterministic Builds

SlugCategory
dotnet-deterministicBuild Config

<Deterministic>true</Deterministic> ensures identical source code produces identical binaries. Essential for reproducible builds and supply chain security.


SlugCategory
dotnet-sourcelinkPackaging

Embeds source repository metadata in NuGet packages, allowing debuggers to automatically download source code. Makes debugging third-party packages seamless.


Analyzers Configured

SlugCategory
dotnet-analyzersCode Quality

Detects whether Roslyn analyzers are configured (via <EnableNETAnalyzers> or explicit analyzer packages). Static analysis catches bugs and enforces coding standards at compile time.


AnalysisLevel

SlugCategory
dotnet-analysis-levelCode Quality

Checks that <AnalysisLevel> is set (e.g., latest-all or latest-recommended). Controls the aggressiveness of built-in .NET analyzers.


Benchmark Project

SlugCategory
dotnet-benchmarksTesting

Detects a BenchmarkDotNet project. Performance benchmarks prevent regressions and provide data-driven optimization decisions.


dotnet-tools.json

SlugCategory
dotnet-local-toolsBuild Config

Checks for .config/dotnet-tools.json, which pins local .NET tool versions. Ensures all developers use the same tool versions (formatters, analyzers, generators).


AOT Ready

SlugCategory
dotnet-aot-readyPackaging

Detects <PublishAot>true</PublishAot> or <IsAotCompatible>true</IsAotCompatible>. Native AOT compilation produces smaller, faster binaries with no JIT overhead.


InternalsVisibleTo

SlugCategory
dotnet-internals-visibleTesting

Detects [InternalsVisibleTo] attributes or <InternalsVisibleTo> in project files. Allows test projects to access internal members without making them public.


Multi-Targeting

SlugCategory
dotnet-multi-targetPackaging

Detects <TargetFrameworks> with multiple entries (e.g., net8.0;net9.0). Multi-targeting maximizes library compatibility across .NET versions.


INFO Checks (0 pts)

These checks are reported but do not affect the score. They provide useful context about the .NET solution.

Target Framework

SlugCategory
dotnet-target-frameworkBuild Config

Reports the target framework(s) used across the solution and flags end-of-life (EOL) versions. Informational only — framework choice depends on project requirements.


Package Count

SlugCategory
dotnet-package-countPackaging

Reports the total number of <PackageReference> entries across all projects. Provides a snapshot of dependency complexity. Not scored because dependency count alone doesn't indicate quality.


Build System

SlugCategory
dotnet-build-systemBuild Config

Detects custom build systems (NUKE, Cake, FAKE) alongside standard dotnet build. Informational — build system choice is a team preference.

Released under the MIT License.