Назад към всички

lint-dotnet

// Run .NET architecture linter to check for MSBuild/CPM violations

$ git log --oneline --stat
stars:194
forks:37
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namelint-dotnet
descriptionRun .NET architecture linter to check for MSBuild/CPM violations

/lint-dotnet

Run the .NET architecture linter on demand to check for violations.

Execution

bash "${CLAUDE_PLUGIN_ROOT}/scripts/lint-dotnet.sh" .

Output Format

RULE_X|file
  line_number: violation details

Rules

RuleCatchesFix
RULE_AHardcoded Version="1.2.3" in Directory.Packages.propsUse $(VariableName) and define in Version.props
RULE_BVersion.props imported outside allowed filesRemove import. Only DPP or eng/DBP allowed.
RULE_CVersion.props not a symlink (in consumer repos)Recreate symlink, never copy the file
RULE_G<PackageReference Version="..."> in .csprojRemove Version attr, use CPM

Allowed Version.props Import Owners

FilePurpose
Directory.Packages.propsCPM-enabled projects
eng/Directory.Build.propsCPM-disabled projects
src/Sdk/*/Sdk.propsSDK entry points (MSBuild auto-imports these)
src/common/*.propsShared SDK infrastructure

All other files importing Version.props = violation.

Clean Output

CLEAN|All rules passed

No violations found. Safe to proceed.

Variable Naming Convention

For unknown packages, generate variable name:

  • Some.Package.Name -> SomePackageNameVersion
  • Remove dots and dashes, append "Version"