DotNetProjectFile.Analyzers
1.15.2
dotnet add package DotNetProjectFile.Analyzers --version 1.15.2
NuGet\Install-Package DotNetProjectFile.Analyzers -Version 1.15.2
<PackageReference Include="DotNetProjectFile.Analyzers" Version="1.15.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="DotNetProjectFile.Analyzers" Version="1.15.2" />
<PackageReference Include="DotNetProjectFile.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add DotNetProjectFile.Analyzers --version 1.15.2
#r "nuget: DotNetProjectFile.Analyzers, 1.15.2"
#:package DotNetProjectFile.Analyzers@1.15.2
#addin nuget:?package=DotNetProjectFile.Analyzers&version=1.15.2
#tool nuget:?package=DotNetProjectFile.Analyzers&version=1.15.2
.NET project file analyzers
The package contains analyzers that analyze .NET project files.
MS Build project file rules
- Proj0001 MS Build project file could not be located
- Proj0002 Upgrade legacy MS Build project files
- Proj0003 Define usings explicit
- Proj0004 Run NuGet security audits automatically
- Proj0005 Define package reference assets as attributes
- Proj0006 Add additional files to improve static code analysis
- Proj0007 Remove empty nodes
- Proj0008 Remove folder nodes
- Proj0009 Use the TargetFramework node for a single target framework
- Proj0010 Define OutputType explicitly
- Proj0011 Define properties once
- Proj0012 Reassign properties with different value
- Proj0013 Include package references only once
- Proj0014 Include project references only once
- Proj0015 Order package references alphabetically
- Proj0016 Order project references alphabetically
- Proj0017 Can't create alias for static using directive
- Proj0018 Order using directives by type
- Proj0019 Order using directives alphabetically
- Proj0020 Item group should only contain nodes of a single type
- Proj0021 Build actions should have a single task
- Proj0022 Build action includes should exist
- Proj0023 Use forward slashes in paths
- Proj0024 Order package versions alphabetically
- Proj0025 Migrate from ruleset file to .globalconfig file
- Proj0026 Remove IncludeAssets when redundant
- Proj0027 Override <TargetFrameworks> with <TargetFrameworks>
- Proj0028 Define conditions on level 1
- Proj0029 Use C# specific properties only when applicable
- Proj0030 Use VB.NET specific properties only when applicable
- Proj0031 Adopt preferred casing of nodes
- Proj0032 Migrate away from BinaryFormatter
- Proj0033 Project reference includes should exist
- Proj0034 Import statement could not be resolved
- Proj0035 Remove deprecated RestoreProjectStyle property
- Proj0036 Remove None when redundant
- Proj0037 Exclude runtime when all assets are private
- Proj0038 Fully specify NoWarn rule IDs
- Proj0039 Treat all warnings as errors is considered a bad practice
- Proj0040 Run NuGet security audits on transitive dependencies too
- Proj0041 NuGet security audits should report on moderate issues at minimum
- Proj0042 Enable <ContinuousIntegrationBuild> when running in CI pipeline
- Proj0043 Use lock files
- Proj0044 Enable <RestoreLockedMode> when <ContinuousIntegrationBuild> is enabled
- Proj0045 Convention-based MSBuild file names should use correct casing
- Proj0046 Update statements should change state
- Proj0047 Label item groups that disable compliation items
- Proj0048 Language version should be set to an explicit version number
- Proj0049 Prefer the latest released language version
- Proj0050 Enforce code-style in builds
- Proj0051 Project reference must be case-consistent with the file system
- Proj0052 Prefer attributes over element
Packaging
- Proj0200 Define IsPackable explicitly
- Proj0201 Define the project version explicitly
- Proj0202 Define the project description explicitly
- Proj0203 Define the project authors explicitly
- Proj0204 Define the project tags explicitly
- Proj0205 Define the project repository URL explicitly
- Proj0206 Define the project URL explicitly
- Proj0207 Define the project copyright explicitly
- Proj0208 Define the project release notes explicitly
- Proj0209 Define the project readme file explicitly
- Proj0210 Define the project license explicitly
- Proj0211 Avoid using deprecated license definition
- Proj0212 Define the project icon file explicitly
- Proj0213 Define the project icon URL explicitly
- Proj0214 Define the NuGet project ID explicitly
- Proj0215 Provide a compliant NuGet package icon
- Proj0216 Define the product name ID explicitly
- Proj0217 Define requiring license acceptance explicitly
- Proj0218 Symbol package format snupkg requires debug type portable
- Proj0219 Packable projects should be libraries
- Proj0220 Symbol package format snupkg requires include symbols to be enabled
- Proj0240 Enable package validation
- Proj0241 Enable package baseline validation
- Proj0242 Generate NuGet packages conditionally
- Proj0243 Generate software bill of materials
- Proj0244 Generate documentation file
- Proj0245 Don’t mix Version and VersionPrefix/VersionSuffix
- Proj0246 Define VersionPrefix if VersionSuffix is defined
- Proj0247 Enable strict mode for package baseline validation
- Proj0248 Enable strict mode for package runtime compatibility validation
- Proj0249 Enable strict mode for package framework compatibility validation
- Proj0250 Generate API compatibility suppression file
- Proj0251 Enable API compatibility attribute checks
- Proj0252 Enable API compatibility parameter name checks
- Proj0253 Versions should be compliant with Semantic Versioning
- Proj0254 Version prefixes should be compliant with Semantic Versioning
- Proj0600 Avoid generating packages on build if not packable
Publishing
Test projects
- Proj0450 Test projects should not be packable
- Proj0451 Test projects should not be publishable
- Proj0452 Test projects require Microsoft.NET.Test.Sdk
- Proj0453 Using Microsoft.NET.Test.Sdk implies a test project
Licensing
- Proj0500 Only include packages with an explicitly defined license
- Proj0501 Package only contains a deprecated license URL
- Proj0502 Only include packages compliant with project
- Proj0503 Package license is unknown
- Proj0504 Package license has changed
- Proj0505 Third-party license registry requires include
- Proj0506 Third-party license registry requires hash
- Proj0507 Third-party license registry must be unconditional
- Proj0508 Order third-party licenses alphabetically
- Proj0509 NuGet package cache could not be resolved
.NET project file analyzers SDK
Central Package Management
- Proj0800 Configure Central Package Management
- Proj0801 Include 'Directory.Packages.props'
- Proj0802 Enable Central Package Management centrally
- Proj0803 Only use VersionOverride when CPM is enabled
- Proj0804 Only use Version when CPM is not enabled
- Proj0805 Define version for PackageReference
- Proj0806 VersionOverride should change the version
- Proj0807 Use Directory.Packages.props only for Central Package Management
- Proj0808 Define CPM related configuration only in Directory.Packages.props
- Proj0809 Global package references are meant for private assets only
- Proj0810 Remove unused package versions
- Proj0811 Directory.Build.props and Directory.Packages.props should be in the same directory
- Proj0812 Remove redundant packages references that are globally referenced
- Proj0813 Global package references only work when CPM is enabled
Analyzers
- Proj1001 Use analyzers for packages
- Proj1002 Use Microsoft's analyzers
- Proj1003 Use Sonar analyzers
- Proj1004 .NET Project File Analyzers SDK not longer requires separate package
- Proj1005 Suppress NuGet issues per package
- Proj1006 Suppress NuGet advisories per vulnerability
- Proj1007 Non-Roslyn languages require .NET Project File Analyzers SDK
Formatting
- Proj1700 Indent XML
- Proj1701 Use CDATA for large texts
- Proj1702 Omit XML declarations
- Proj1703 MSBuild child elements should be separated by an empty line
Design
- Proj1300 Avoid project references to executables
- Proj1301 Project references of packable targets should be packable
- Proj1302 Avoid project references to test projects
- Proj1303 Avoid project references to benchmark projects
Other
- Proj1100 Avoid using Moq
- Proj1101 Package references should have stable versions
- Proj1102 Use Coverlet Collector or MSBuild
- Proj1103 TUnit test projects must be executable
- Proj1104 TUnit conflicts with Microsoft.NET.Test.Sdk
- Proj1200 Exclude private assets as project file dependency
Resource file rules
- Proj2000 Embed valid resource files
- Proj2001 Define data in a resource file
- Proj2002 Sort resource file values alphabetically
- Proj2003 Add invariant fallback resources
- Proj2004 Add invariant fallback values
- Proj2005 Escape XML nodes of resource values
- Proj2100 Indent RESX
Generic
- Proj3000 Only use UTF-8 without BOM
- Proj3001 Track uses of "TODO" tags
- Proj3002 Remove commented-out code
- Proj3003 Trim whitespace
NuGet configuration
- Proj0300 Configure NuGet explicitly
- Proj0301 Clear previously defined package sources
- Proj0302 NuGet authentication should be secure
- Proj0303 Define a mapping for each package source
- Proj0304 Package source mappings should be unique
- Proj0305 Last source map should map all packages
- Proj0306 Avoid local package sources
INI
- Proj4000 Invalid INI file
- Proj4001 Invalid INI header
- Proj4002 Invalid INI key-value pair
- Proj4010 Sections should contain at least one key-value pair
.editorconfig
SLNX
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (3)
Showing the top 3 popular GitHub repositories that depend on DotNetProjectFile.Analyzers:
| Repository | Stars |
|---|---|
|
Buildalyzer/Buildalyzer
A utility to perform design-time builds of .NET projects without having to think too hard about it.
|
|
|
destructurama/attributed
Use attributes to control how complex types are logged to Serilog.
|
|
|
PublicApiGenerator/PublicApiGenerator
Project to generate a public API of an assembly or type (useful for semantic versioning)
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.15.2 | 748 | 7/8/2026 |
| 1.15.1 | 3,203 | 6/26/2026 |
| 1.15.0 | 5,795 | 6/12/2026 |
| 1.14.1 | 6,928 | 6/1/2026 |
| 1.14.0 | 6,632 | 5/13/2026 |
| 1.13.1 | 4,515 | 5/4/2026 |
| 1.12.2 | 2,889 | 4/29/2026 |
| 1.12.1 | 2,418 | 4/24/2026 |
| 1.12.0 | 958 | 4/23/2026 |
| 1.11.0 | 6,871 | 4/13/2026 |
| 1.10.0 | 6,055 | 3/27/2026 |
| 1.9.0 | 25,546 | 2/5/2026 |
| 1.8.3 | 4,218 | 1/21/2026 |
| 1.8.2 | 3,861 | 1/9/2026 |
| 1.8.1 | 1,318 | 1/6/2026 |
| 1.8.0 | 18,687 | 10/6/2025 |
| 1.7.1 | 8,313 | 8/12/2025 |
| 1.7.0 | 12,271 | 6/18/2025 |
| 1.6.1 | 1,747 | 6/5/2025 |
v1.15.2
- Skip SonarQube <Content> when building inside Visual Studio, Rider, or ReSharper. (BUG)
- Add <EmbeddedResource> to <AdditionalFiles> once. (BUG)
- Improve file cache.
v1.15.1
- Pack .targets and .props when explicitly configured in <None>. (BUG)
v1.15.0
- Proj0052: Prefer attributes over elements. (NEW RULE)
- Proj0253, Proj0254: Ignore version containing an MSBuild variable. (FP)
- Hide folders only containing invisible <Content>. (BUG)
v1.14.1
- Ignore <Target> nodes when reading properties. (BUG)
- <Content> to improve the SonarQube experience should not be packed. (BUG)
v1.14.0
- .net.csproj shows Directory.*, .globalconfig, and .editorconfig files. (BUG)
- Extend suppression by the use of NoWarn attributes and nodes.
v1.13.1
- Add missing props and targets to package. (BUG)
v1.13.0
- Proj0006: Enable Additional file detection again. (UPDATE)
- Proj1004: .NET Project File Analyzers SDK no longer requires separate package. (NEW RULE)
- Proj1300: Benchmark projects may depend on everything. (FP)
- Proj1303: Avoid project references to benchmark projects. (NEW RULE)
- Proj1005: Suppress NuGet issues per package. (NEW RULE)
- Proj1006: Suppress NuGet advisories per vulnerability. (NEW RULE)
- Proj1007: Non-Roslyn languages require .NET Project File Analyzers SDK. (NEW RULE)
- Proj3000: Drop difference between additional and regular files. (FP)
v1.12.2
- Proj0201: Exclude Microsoft.NET.Sdk.Web projects. (FP)
- Proj1001: Exclude xunit.runner.visualstudio. (FP)
- Proj0253/4: Fix runtime TypeConverter resolvement. (FP)
v1.12.1
- Proj3000: Ignore Additional File status when checking for UTF8-BOM. (FP)
v1.12.0
- Proj0021: Exclude is a filter on a task, and should be ignored. (FP)
- Proj0028: Conditions within <Target> are should be allowed. (FP)
- Proj0044: Check <RestoreLockedMode> also via MSBuild visible properties. (FP)
- Proj0253: Versions should be compliant with Semantic Versioning (NEW RULE)
- Proj0254: Version prefixes should be compliant with Semantic Versioning (NEW RULE)
- Proj0051: Project reference must be case-consistent with the file system. (NEW RULE)
- Proj0813: Global package references only work when CPM is enabled. (NEW RULE)
- Proj1000: Use the .NET project file analyzers. (DROPPED)
- Proj1001: Take transient dependencies into account when checking for analyzers. (FP)
- Proj1002: Take actual MSBuild value into account. (FP)
- Proj1004: .NET Project File Analyzers SDK not longer requires separate package (NEW RULE)
- Proj3000: Exclude *.user files and .nuget directory. (FP)
- Proj3002: Exclude <!-- SingleWord --> comments. (FP)
- Explicitly include .globalconfig file(s). (BUG)
- FileCache gracefully handles gone and unparsable content. (BUG)
v1.11.0
- Proj0050: Enforce code-style in builds. (NEW RULE)
- Proj0306: Avoid local package sources. (NEW RULE)
- Proj1300: Determine IsTestProject also via context.Props. (FP)
- Proj1703: MSBuild child elements should be separated by an empty line. (NEW RULE)
- SonarQube integration should not add <Content> twice. (BUG)
v1.10.0
- Proj0243: Support <GlobalPackageReference> as a source. (FP)
- Proj1200: Support nuspec not grouped dependencies in the metadata. (FP)
- Add SonarQube integration.
v1.9.0
- Proj0300: Configure NuGet explicitly (NEW RULE)
- Proj0301: Clear previously defined package sources (NEW RULE)
- Proj0302: NuGet authentication should be secure (NEW RULE)
- Proj0303: Define a mapping for each package source (NEW RULE)
- Proj0304: Package source mappings should be unique (NEW RULE)
- Proj0305: Last source map should map all packages (NEW RULE)
- Proj1700: Indent XML for NuGet.config files. (EXTEND RULE)
- Proj1702: Omit XML declaration for NuGet.config files. (EXTEND RULE)
- Proj3003: Trim whitespace (NuGet.confg). (EXTEND RULE)
v1.8.3
- Proj0048: LanguageVersion converter could not be resolved runtime. (BUG)
- Proj0049: Prefer the latest released language version for F#. (EXTEND RULE)
- Proj0219: Packable projects could be .NET CLI tools too. (FP)
v1.8.2
- Proj0049: Prefers latest version. (FP)
v1.8.1
- Trim MSBuild attribute values. (FP/FN)
- Proj0049: Prefer the latest released language version. (NEW RULE)
- Proj0201: <Version> is not required when using NuGet.Versioning or MinVer. (FP)
- Proj0205: Define <RepositoryUrl> is not needed for SDK's 8.0 and up. (FP)
- Proj0220: Symbol package format snupkg requires include symbols to be enabled (NEW RULE)
- Proj0808: Define CPM related configuration only in Directory.Packages.props. (EXTENDED RULE)
- Proj0812: Remove redundant packages references that are globally referenced. (NEW RULE)
- Proj3003: Trim whitespace. (NEW RULE)
v1.8.0
- Added support for F# projects when using DotNetProjectFile.Analyzers.Sdk.
- Added support for Visual Cobol projects when using DotNetProjectFile.Analyzers.Sdk.
- Automatically add the project file to the additional files. (BUG)
- Proj0023: Report on backward slashes in DockerfileContext. (FN)
- Proj0029: C# only properties now only checked for project files. (FP)
- Proj0030: VB.NET only properties now only checked for project files. (FP)
- Proj0047: Label item groups that disable compilation items. (NEW RULE)
- Proj0048: Language version should be set to an explicit version number. (NEW RULE)
- Proj0219: Packable projects should be libraries. (NEW RULE)
- Proj0811: Directory.Build.props and Directory.Packages.props should be in the same directory. (NEW RULE)
- Proj1200: Detect native (linux) .so files. (FP)
- Proj1300: Avoid project references to executables. (NEW RULE)
- Proj1301: Project references of packable targets should be packable. (NEW RULE)
- Proj1302: Avoid project references to test projects. (NEW RULE)
- Proj3000: Exclude .vs and .git directories from BOM checking. (FP)
- Proj5000: Use SLNX solution files. (NEW RULE)
- Proj5001: Remove SLN solution files. (NEW RULE)
- Proj5005: Omit Project ID's. (NEW RULE)
v1.7.1
- Proj0045: Convention-based MSBuild file names should use correct casing. (NEW RULE)
- Proj0046: Update statements should change state. (NEW RULE)
- Proj0509: NuGet package cache could not be resolved. (NEW RULE)
- Proj3000: Ignore CompatibilitySuppressions.xml files. (FP)
- Analysis on project files (.csproj, .vbproj) are not longer executed for the SDK. (Performance)
- Add parent package to message for issues with transitive licenses.
v1.7.0
- Proj0218: Symbol package format snupkg requires debug type portable. (NEW RULE)
- Proj0240: Fix message incorrectly suggesting to disable DevelopmentDependency, rather than to enable it. (BUG)
- Proj1001: No longer suggests to use 'Microsoft.CodeAnalysis.Analyzers' for anything in 'Microsoft.CodeAnalysis' namespace, since it's only supposed to be used for analyzing analyzers. (FP)
- Proj1001: No longer suggests to include analyzers for analyzing other analyzers. (FP)
- Proj1700: Indent XML for SLNX files. (FN)
- Proj1702: Omit XML declaration for SLNX fles. (FN)
- Proj3001: Track uses of "TODO" tags for SLNX files. (FN)
- Proj3002: Remove commented-out code for SLNX files. (FN)
v1.6.1
- Proj0040: Fix capitalization of <NuGetAuditMode> in message. (BUG)
- Proj0044: Allow build agent specific conditions for setting RestorePackagesWithLockFile. (FP)
- Proj050*: Only report on project files, not props. (FP)
- Proj0504: Verify third-party licenses on package info, not on the package reference node. (FP)
- Proj0508: Order third-party licenses alphabetically. (NEW RULE)
- Proj0807: <TrirdPartyLicense> is allowed in Directory.Packages.props. (FP)
v1.6.0
- Proj0502: Fixed missing package name when reference was using Update instead of Include. (BUG)
- Proj0503: Package license is unknown. (NEW RULE)
- Proj0504: Package license has changed. (NEW RULE)
- Proj0505: Third-party license registry requires include. (NEW RULE)
- Proj0506: Third-party license registry requires hash. (NEW RULE)
- Proj0507: Third-party license registry must be unconditional. (NEW RULE)
v1.5.13
- Proj0022: Include <EditorConfig> and <GlobalAnalyzerConfigFiles> as build actions. (FN)
- Proj0025: Change advise to the use of .globalconfig. (DOCUMENTATION)
- Proj0040: Run NuGet security audits on transitive dependencies too. (NEW RULE)
- Proj0041: NuGet security audits should report on moderate issues at minimum. (NEW RULE)
- Proj0042: Enable <ContinuousIntegrationBuild> when running in CI pipeline. (NEW RULE)
- Proj0043: Use lock files. (NEW RULE)
- Proj0044: Enable <RestoreLockedMode> when <ContinuousIntegrationBuild> is enabled. (NEW RULE)
- Proj0401: Only publish executables. (NEW RULE)
v1.5.12
- Proj0005: Fixed missing package name when reference was using Update instead of Include. (BUG)
- Proj0039: Treat all warnings as errors is considered a bad practice. (NEW RULE)
- Proj0244: Exclude development dependencies. (FP)
- Proj0809: Fixed missing package name when reference was using Update instead of Include. (BUG)
- Proj0810: Fixed missing package name when reference was using Update instead of Include. (BUG)
- Proj1200: Fixed missing package name when reference was using Update instead of Include. (BUG)
v1.5.11
- Report issues on root node only on start element.
- Proj0026: Stop reporting on conditonal properties. (FP)
- Proj0036: Remove None when redundant. (NEW RULE)
- Proj0038: Fully specify NoWarn rule IDs. (NEW RULE)
- Proj0214: Severity to INFO as it is considered too opinionated. (UPDATE)
- Proj1001: Suggested analyzers now based on package references rather than assembly names. (FP)
- Proj1001: Now suggest to use AwesomeAssertions.Analyzers for AwesomeAssertions. (FN)
- Proj1200: Fix compilation packages (that only hold a collective set of dependencies) incorrectly marked as development-dependencies. (FP)
- Proj1701: Do not report on short (less then 3 lines) release notes. (FP)
v1.5.10.1
- Proj0006: Disable as the files to analyze are added by default sincse 1.5.10. (UPDATE)
v1.5.10
- Proj0035: Remove deprecated RestoreProjectStyle property. (NEW RULE)
- Proj0217: Define requiring license acceptance explicitly. (NEW RULE)
- Proj0500: Only include packages with an explicitly defined license. (NEW RULE)
- Proj0501: Package only contains a deprecated license URL. (NEW RULE)
- Proj0502: Only include packages compliant with project. (NEW RULE)
- Proj0810: Remove unused package versions. (NEW RULE)
- Proj1003: Take <GlobalPackageReference>'s also into account. (FP)
- Proj1103: TUnit test projects must be executable. (NEW RULE)
- Proj1104: TUnit conflicts with Microsoft.NET.Test.Sdk. (NEW RULE)
- Proj3002: Remove commented-out code. (NEW RULE)
v1.5.9
- Proj0034: Import statement could not be resolved by the analyzer. (NEW RULE)
- Proj0808: Define global package reference only in Directory.Packages.props. (NEW RULE)
- Proj0809: Global package references are meant for private assets only. (NEW RULE)
- Proj1200: Now able to heuristically determine if dependency should be a private asset. (FN)
- Fix AD0001 when provided paths are not validly formatted. (BUG)
- Disable rules that can not be excecuted correctly on a failing import. (FP)
v1.5.8
- Proj1001: Take <GlobalPackageReference>'s also into account. (FP)
v1.5.7
- Proj0006: Report on RESX files that are not added as additional files. (FN)
- Proj1102: Use Coverlet Collector or MSBuild. (NEW RULE)
- Proj2???: Report on RESX files that are not added as additional files. (FN)
v1.5.6
- Proj0033: Project reference includes should exist. (NEW RULE)
- Proj0201: VersionPrefix is now allowed as alternative to Version. (FP)
- Proj0244: Generate documentation file. (NEW RULE)
- Proj0245: Don't mix Version and VersionPrefix/VersionSuffix. (NEW RULE)
- Proj0246: Define VersionPrefix if VersionSuffix is defined. (NEW RULE)
- Proj0247: Enable strict mode for package baseline validation. (NEW RULE)
- Proj0248: Enable strict mode for package runtime compatibility validation. (NEW RULE)
- Proj0249: Enable strict mode for package framework compatibility validation. (NEW RULE)
- Proj0250: Generate API compatibility suppression file. (NEW RULE)
- Proj0251: Enable API compatibility attribute checks. (NEW RULE)
- Proj0252: Enable API compatibility parameter name checks. (NEW RULE)
- Proj0452: No longer require test SDK for TUnit projects. (FP)
- Proj1001: Fix for deprecated packages TUnit.Analyzers and TUnit.Assertions.Analyzers. (FP)
- Proj1011: Now reports on PackageVersion node if present, instead of PackageReference.
- Added AppendOnlyCollection to improve performance of parsing.
- Introduction of XmlLocations to create Location based on XmlPositions.
- Change <Using>'s determination of Type. (BUG)
v1.5.5
- Fix some warnings being reported in the wrong files. (BUG)
- Fix crashes related to errors being reported in the wrong files. (BUG)
v1.5.4
- Proj0009: Take conditionals into account. (FP)
- Proj0032: Migarate away from BinaryFormatter. (NEW RULE)
- Proj3001: Track uses of "TODO" tags (MS BUILD and RESX). (NEW RULE)
v1.5.3
- Disable INI based rules by default. (BUG)
v1.5.2
- Proj4000: Defensive on unparsable INI files. (BUG)
v1.5.1
- Proj0243: Generate software bill of materials. (NEW RULE)
- Proj1200: Add packages that should be included as private assets. (FN)
- Proj3000: Inaccessible files should not lead to a crash. (BUG)
- Proj4000: Invalid INI file. (NEW RULE)
- Proj4001: Invalid INI header. (NEW RULE)
- Proj4002: Invalid INI key-value pair. (NEW RULE)
- Proj4010: Sections should contain at least one key-value pair. (NEW RULE)
- Proj4050: Header must be a GLOB. (NEW RULE)
- Proj4051: Use equals sign for key-value assignments. (NEW RULE)
v1.5.0
- Proj0700: Avoid defining <Compile> items in SDK project. (NEW RULE)
- Support .net.csproj SDK projects.
- Automatically add the project file to the additional files does not work.
v1.4.8
- Proj0029: Use C# specific properties only when applicable. (NEW RULE)
- Proj0030: Use VB.NET specific properties only when applicable. (NEW RULE)
- Proj0031: Adopt preferred casing of nodes. (NEW RULE)
- Proj0216: Define the product name explicitly. (NEW RULE)
- Support Directory.Build.targets.
- Automatically add the project file to the additional files.
v1.4.7
- Proj2005: Escape XML nodes of resource values. (NEW RULE)
- Proj2100: Children of <value> should be excluded. (FP)
v1.4.6
- Proj3000: Don't crash on non-existing files. (BUG)
v1.4.5
- Proj3000: Only use UTF-8 without BOM. (NEW RULES)
- Support rules for other project file types like .editoconfig files.
- Processing files with 7 times speed improvement.
v1.4.4
- Rules should only report on self, not on imports. (BUG)
v1.4.3
- Proj0026: Remove IncludeAssets when redundant. (NEW RULE)
- Proj0027: Override <TargetFrameworks> with <TargetFrameworks>. (NEW RULE)
- Proj0028: Define conditions on level 1. (NEW RULE)
- Proj1100: Disable rule by default. (FP)
- Proj2100: Space preserved closing nodes should not be reported. (FP)
- Reading Nodes with 7% speed improvement.
v1.4.2
- Proj0025: Migrate from ruleset file to .editorconfig file. (NEW RULE)
- Proj0215: Provide a compliant NuGet package icon. (NEW RULE)
- Proj02??: Do not report on projects with <IsTestProject> set to true. (FP)
- Proj0450: Test projects should not be packable. (NEW RULE)
- Proj0451: Test projects should not be publishable. (NEW RULE)
- Proj0452: Test projects require Microsoft.NET.Test.Sdk. (NEW RULE)
- Proj0453: Using Microsoft.NET.Test.Sdk implies a test project. (NEW RULE)
- Proj1200: Added 48 more compile-time dependencies to the private-asset list. (FN)
v1.4.1
- Proj1101: Resolve version in project files only. (FP)
- Proj1701: Use <![CDATA[ for large texts. (NEW RULE)
- Proj1702: Omit XML declarations. (NEW RULE)
- Bound Directory.Build.props and Directory.Packages.props to other props files. (BUG)
v1.4.0
- Proj0800: Configure CPM. (NEW RULE)
- Proj0801: Include CPM file. (NEW RULE)
- Proj0802: Enable Central Package Management centrally. (NEW RULE)
- Proj0803: Only use VersionOverride when CPM is enabled. (NEW RULE)
- Proj0804: Only use Version when CPM is not enabled. (NEW RULE)
- Proj0805: Define version for PackageReference. (NEW RULE)
- Proj0806: VersionOverride should change the version (NEW RULE)
- Proj0807: Use only Directory.Packages.props for Central Package Management (NEW RULE)
- Proj1101: Report on <PackageVersion> too. (FN)
- Proj1101: Report on <PackageReference VersionOverride> too. (FN)
- Proj2100: Indent RESX. (NEW RULE)
v1.3.1
- Proj1101: Package references should have stable versions. (NEW RULE)
v1.3.0
- Proj0024: Order package versions alphabetically. (NEW RULE)
- Proj1700: Indent XML. (NEW RULE)
- Use AdditionalFileAction rather than CompilationAction for AdditionalFiles.
- Improve XML node position determination.
v1.2.4
- Support #pragma warning disable/restore.
- Proj0242: Generate NuGet packages conditionally. (NEW RULE)
v1.2.3
- Use special IOFile and IOPath to communicate with the file system.
- Proj0023: Use forward slashes in paths. (NEW RULE)
- Proj1002: Use Microsoft's .NET analyzers. (NEW RULE)
v1.2.2
- Proj0009: TargetFrameworks allowed when overriding imports. (FP)
v1.2.1
- Proj0021: Build actions should have a single task. (NEW RULE)
- Proj0022: Build action includes should exist. (NEW RULE)
- Proj0240: Enable package validation. (NEW RULE)
- Proj0241: Enable package baseline validation. (NEW RULE)
v1.2.0
- Proj0006: Directory.Build.Props is not required to be added as additional file. (FP)
- Proj0020: Item group should only contain nodes of a single type. (NEW RULE)
- Proj0600: Avoid <GeneratePackageOnBuild> if <IsPackable> is false. (NEW RULE)
v1.1.0
- Support of Directory.Build.props.
v1.0.14
- Proj0018: Fix false positive reports always triggering. (FP)
- Proj0018: Fix typo in message.
v1.0.13
- Proj0004: Only report when <NuGetAudit> is explicitly disabled. (FP)
v1.0.12
- Proj1200: Exclude private assets as project file dependency. (NEW RULE)
- Proj0015, Proj0016: Order references case-insensitive. (FP & FN)
v1.0.11
- Proj0015, Proj0016: Order references that are substrings of each other. (FP & FN)
- Proj1100: Avoid using Moq. (NEW RULE)
v1.0.10
- Proj0017: Can't create alias for static using directive. (NEW RULE)
- Proj0018: Order using directives by type. (NEW RULE)
- Proj0019: Order using directives alphabetically. (NEW RULE)
- Proj0202: Both <Description> and <PackageDescription> are fine. (FP)
- Improved message for Proj2002 to be more informative.
- Depend on Microsoft.CodeAnalysis.Workspaces.Common version 4.0.1.
v1.0.9
- Proj0016: Improve ordering of file paths. (FP & FN)
v1.0.8
- Proj0013: Include package references only once. (NEW RULE)
- Proj0014: Include project references only once. (NEW RULE)
- Proj0015: Order package references alphabetically. (NEW RULE)
- Proj0016: Order project references alphabetically. (NEW RULE)
- Proj0400: Define the project publishability explicitly. (NEW RULE)
- Support <Choose> nodes.
v1.0.7
- Proj0011: Define properties once. (NEW RULE)
- Proj0012: Reassign properties with different value. (NEW RULE)
- Proj0200: Define IsPackable explicitly. (NEW RULE)
- Proj0201: Define the project version explicitly. (NEW RULE)
- Proj0202: Define the project description explicitly. (NEW RULE)
- Proj0203: Define the project authors explicitly. (NEW RULE)
- Proj0204: Define the project tags explicitly. (NEW RULE)
- Proj0205: Define the project repository URL explicitly. (NEW RULE)
- Proj0206: Define the project URL explicitly. (NEW RULE)
- Proj0207: Define the project copyright explicitly. (NEW RULE)
- Proj0208: Define the project release notes explicitly. (NEW RULE)
- Proj0209: Define the project readme file explicitly. (NEW RULE)
- Proj0210: Define the project license explicitly. (NEW RULE)
- Proj0211: Avoid using deprecated license definition. (NEW RULE)
- Proj0212: Define the project icon file explicitly. (NEW RULE)
- Proj0213: Define the project icon URL explicitly. (NEW RULE)
- Proj0214: Define the NuGet project ID explicitly. (NEW RULE)
v1.0.6
- Proj0010: Define OutputType explicitly. (NEW RULE)
- Proj1001: Reported dependency with missing analyzer is now nearest name match. (FP)
- Proj1001: Added 14 new package specific analyzers. (FN)
- Prop2000: Embed valid resource files. (NEW RULE)
- Prop2001: Define data in a resource file. (NEW RULE)
- Proj2002: Sort resource file values alphabetically. (NEW RULE)
- Proj2003: Add invariant fallback resources. (NEW RULE)
- Proj2004: Add invariant fallback values. (NEW RULE)
v1.0.5
- Proj1003: Sonar Analyzers defined in prop. (FP)
v1.0.4
- Proj1003: Use Sonar Analyzers. (NEW RULE)
v1.0.3
- Proj0007: <Import> is never an empty node. (FP)
v1.0.2
- Proj0006: Add additional files to improve static code analysis. (NEW RULE)
- Proj0007: Remove empty nodes. (NEW RULE)
- Proj0008: Remove folder nodes. (NEW RULE)
- Proj0009: Use the TargetFramework node for a single target framework. (NEW RULE)
- Proj1000: Use the .NET project file analyzers. (NEW RULE)
v1.0.1
- Proj0002: Added Microsoft.CodeAnalysis.Analyzers as analyzer to add. (FN)
- Proj0005: Define package reference assets as attributes. (NEW RULE)
- Proj1001: Dropped Qowaiv.Analyzers.CSharp. (FP)
v1.0.0
- Proj0001: MS Build project file could not be located. (NEW RULE)
- Proj0002: Upgrade legacy MS Build project file. (NEW RULE)
- Proj0003: Define usings explicit. (NEW RULE)
- Proj1001: Use analyzers for packages. (NEW RULE)