Run .NET architecture linter to check for MSBuild/CPM violations
Runs .NET architecture linter to detect MSBuild/CPM violations like hardcoded package versions or improper Version.props imports. Triggers on demand with `/lint-dotnet` to enforce centralized version management rules.
/plugin marketplace add ANcpLua/ancplua-claude-plugins/plugin install dotnet-architecture-lint@ancplua-claude-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Run the .NET architecture linter on demand to check for violations.
bash "${CLAUDE_PLUGIN_ROOT}/scripts/lint-dotnet.sh" .
RULE_X|file
line_number: violation details
| Rule | Catches | Fix |
|---|---|---|
| RULE_A | Hardcoded Version="1.2.3" in Directory.Packages.props | Use $(VariableName) and define in Version.props |
| RULE_B | Version.props imported outside allowed files | Remove import. Only DPP or eng/DBP allowed. |
| RULE_C | Version.props not a symlink (in consumer repos) | Recreate symlink, never copy the file |
| RULE_G | <PackageReference Version="..."> in .csproj | Remove Version attr, use CPM |
| File | Purpose |
|---|---|
Directory.Packages.props | CPM-enabled projects |
eng/Directory.Build.props | CPM-disabled projects |
src/Sdk/*/Sdk.props | SDK entry points (MSBuild auto-imports these) |
src/common/*.props | Shared SDK infrastructure |
All other files importing Version.props = violation.
CLEAN|All rules passed
No violations found. Safe to proceed.
For unknown packages, generate variable name:
Some.Package.Name -> SomePackageNameVersion