Skip to content

feat: Reorganized solution and cleanedup the configurations#183

Merged
samtrion merged 3 commits into
mainfrom
feature/restructured
Dec 9, 2025
Merged

feat: Reorganized solution and cleanedup the configurations#183
samtrion merged 3 commits into
mainfrom
feature/restructured

Conversation

@samtrion
Copy link
Copy Markdown
Contributor

@samtrion samtrion commented Dec 9, 2025

Summary by CodeRabbit

  • Chores
    • Set max line length to 160 for XML project files and reorganized build configuration to a centralized, multi-targeting layout.
  • Style
    • Normalized project file formatting for consistency.
  • Documentation
    • Rewrote and expanded package READMEs, diagnostic guidance, and usage docs; added a diagnostic-template to standardize rule docs.
  • Chores
    • Removed Visual Studio–specific generated-file cleanup behavior.

✏️ Tip: You can customize this high-level summary in your review settings.

@samtrion samtrion self-assigned this Dec 9, 2025
@samtrion samtrion requested a review from a team as a code owner December 9, 2025 10:57
@samtrion samtrion added the state:ready for merge Indicates that a pull request has been reviewed and approved, and is ready to be merged into the mai label Dec 9, 2025
@samtrion samtrion requested review from Spacemonkay and removed request for a team December 9, 2025 10:57
@samtrion samtrion added the type:feature Indicates a new feature or enhancement to be added. label Dec 9, 2025
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 9, 2025

Walkthrough

The PR centralizes MSBuild props/targets into a new buildMultiTargeting layer, updates transitive imports to reference it, removes certain VS-only generated-file rules, reformats one ProjectReference, adds EditorConfig max_line_length = 160 for XML project files, and substantially expands README and diagnostic/documentation markdowns.

Changes

Cohort / File(s) Summary
EditorConfig
/.editorconfig, src/NetEvolve.Defaults/configurations/editorconfig.txt
Added max_line_length = 160 for XML project file patterns ([*.{slnx,csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj,nativeproj,locproj}]).
Project file formatting
src/NetEvolve.Defaults/NetEvolve.Defaults.csproj
Reformatted a ProjectReference from multi-line to single-line; no behavioral change.
Top-level build layer
src/NetEvolve.Defaults/build/NetEvolve.Defaults.props, src/NetEvolve.Defaults/build/NetEvolve.Defaults.targets
Replaced multiple individual imports with single imports that point to ../buildMultiTargeting/NetEvolve.Defaults.props / ../buildMultiTargeting/NetEvolve.Defaults.targets.
Multi-targeting build layer
src/NetEvolve.Defaults/buildMultiTargeting/NetEvolve.Defaults.props, src/NetEvolve.Defaults/buildMultiTargeting/NetEvolve.Defaults.targets, src/NetEvolve.Defaults/buildMultiTargeting/SupportGeneral.props, src/NetEvolve.Defaults/buildMultiTargeting/...
Introduced/changed multiTargeting props/targets to import explicit support props/targets (General, DetectCI, PackageInformation, Copyright, NuGetAudit, TestProjects, AdditionalFiles, SystemRuntimeExperimental, AssemblyAttributes). SupportGeneral.props removed VS-only GeneratedFolder and cleanup items. Several imports are now conditional where applicable.
Transitive build layer
src/NetEvolve.Defaults/buildTransitive/NetEvolve.Defaults.props, src/NetEvolve.Defaults/buildTransitive/NetEvolve.Defaults.targets
Updated import paths to reference the buildMultiTargeting directory instead of build.
Documentation & templates
README.md, src/NetEvolve.Defaults/README.md, src/NetEvolve.Defaults.Analyzer/README.md, templates/diagnostic.md, docs/usage/*.md
Extensive documentation rewrites and additions: full README replacements, analyzer README expansion, diagnostic template added, and many docs/usage/NED0001NED0009 files rewritten into structured diagnostic guidance (Overview, Description, Impact, Resolution, examples, best practices).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Verify that all relocated import paths use correct relative paths and preserve intended conditionals (e.g., DisableSupportPackageInformation).
  • Inspect SupportGeneral.props removal of VS-only GeneratedFolder logic for unintended impacts in Visual Studio IDE scenarios.
  • Confirm no behavioral regressions from consolidating many imports into multi-targeting props/targets (check ordering and override semantics).
  • Review large documentation changes for correctness and any references to config/property names that must match MSBuild behavior.

Poem

🐰 I hopped through props and targets with care,

Gathered loose imports into one tidy lair.
Docs grew like carrots — many, bright, and new,
Lines now stretch to one-sixty, tidy and true.
A rabbit's small cheer for builds straightened through.

Pre-merge checks

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title only partially describes the main changes; it mentions reorganization and cleanup but obscures that the core change is restructuring the MSBuild build directory architecture from build to buildMultiTargeting, along with extensive documentation improvements. Consider a more specific title like 'feat: Restructure MSBuild build configuration to buildMultiTargeting and expand documentation' to better reflect the primary architectural change and documentation updates.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between a4d24e9 and f6a12af.

📒 Files selected for processing (13)
  • README.md (1 hunks)
  • docs/usage/ned0001.md (1 hunks)
  • docs/usage/ned0002.md (1 hunks)
  • docs/usage/ned0003.md (1 hunks)
  • docs/usage/ned0004.md (1 hunks)
  • docs/usage/ned0005.md (1 hunks)
  • docs/usage/ned0006.md (1 hunks)
  • docs/usage/ned0007.md (1 hunks)
  • docs/usage/ned0008.md (1 hunks)
  • docs/usage/ned0009.md (1 hunks)
  • src/NetEvolve.Defaults.Analyzer/README.md (1 hunks)
  • src/NetEvolve.Defaults/README.md (1 hunks)
  • templates/diagnostic.md (1 hunks)
✅ Files skipped from review due to trivial changes (4)
  • docs/usage/ned0007.md
  • src/NetEvolve.Defaults.Analyzer/README.md
  • templates/diagnostic.md
  • src/NetEvolve.Defaults/README.md
🧰 Additional context used
🪛 LanguageTool
README.md

[uncategorized] ~114-~114: The official name of this software platform is spelled with a capital “H”.
Context: ...e code style and formatting rules 4. .github/instructions: Apply project-specific ...

(GITHUB)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build & Tests / Run Tests / Testing .NET solution
🔇 Additional comments (12)
docs/usage/ned0002.md (1)

1-69: Excellent documentation restructuring.

The NED0002 guide provides comprehensive, actionable guidance with clear step-by-step instructions, well-formed XML examples, and sensible best practices. The multi-section format (Overview, Description, Impact, Resolution, Best Practices, Example, See Also) establishes a consistent, user-friendly documentation pattern.

docs/usage/ned0009.md (1)

1-72: Consistent and comprehensive copyright guidance.

The NED0009 documentation follows the established multi-section pattern with clear rationale and practical examples. The best practices section (lines 45–52) effectively conveys copyright year management strategy and format expectations. The example demonstrates realistic integration with related package metadata properties.

docs/usage/ned0004.md (1)

1-71: Clear and practical package tags guidance.

The NED0004 documentation provides useful strategy for tag selection with concrete examples. The best practices section (lines 47–53) balances guidance on tag quantity, format, and searchability strategy effectively. The example demonstrates appropriate tag selection aligned with the NetEvolve.Defaults package purpose.

docs/usage/ned0003.md (1)

1-70: Effective description guidance with realistic examples.

The NED0003 documentation provides clear, actionable guidance on writing package descriptions. Best practices (lines 47–52) appropriately emphasize clarity and technical accuracy while discouraging marketing language. The example description (line 62) demonstrates realistic, comprehensive phrasing suitable for a build configuration package.

docs/usage/ned0008.md (1)

1-73: Pragmatic company metadata guidance.

The NED0008 documentation appropriately addresses both corporate and open-source project scenarios. The best practices section (lines 47–53) effectively covers legal naming, consistency, and organizational branding considerations. The example demonstrates realistic integration with related metadata properties (Authors, Copyright).

README.md (3)

1-5: Excellent README restructuring and expansion.

The complete README rewrite transforms a brief description into a comprehensive documentation hub with clear sections covering installation, features, repository structure, and best practices. The structure is logical, well-organized, and effectively guides users from quick start through architectural decisions.


32-51: Clear Quick Start with proper build tool guidance.

The installation section appropriately emphasizes the PrivateAssets="all" attribute for build-only dependencies, with a clear explanation (line 53) of why this matters. The examples are realistic and follow .NET ecosystem conventions.


104-114: Note: Static analysis false positive on GitHub folder naming.

The static analysis tool flagged .github/instructions as requiring capitalization, but .github/ is the standard GitHub convention for special workflow and configuration folders and should remain lowercase. This is not a documentation error.

docs/usage/ned0001.md (1)

1-73: Sound PackageId guidance with clear naming conventions.

The NED0001 documentation effectively communicates PackageId requirements with explicit naming conventions (lines 30–33: reverse domain notation, PascalCase, period separators). The example demonstrates realistic naming practices, and the best practices section appropriately emphasizes namespace uniqueness across the NuGet ecosystem.

docs/usage/ned0006.md (1)

1-73: Comprehensive repository metadata guidance.

The NED0006 documentation provides complete guidance on repository URL configuration, appropriately emphasizing public accessibility and HTTPS (lines 50–51). The example nicely coordinates RepositoryUrl, RepositoryType, and PackageProjectUrl properties, demonstrating holistic package metadata configuration.

docs/usage/ned0005.md (2)

1-71: Excellent documentation structure and content quality.

The documentation follows a clear, comprehensive format with well-organized sections covering the problem, impact, resolution, and best practices. Package metadata elements can be specified directly in the project file, and the XML examples demonstrate this correctly. The best practices section (lines 45–52) aligns well with current NuGet authoring standards.


70-71: Update deprecated Microsoft documentation URLs.

The NuGet reference documentation is available at learn.microsoft.com/en-us/nuget/reference/msbuild-targets. The referenced URLs use the deprecated /docs.microsoft.com/ domain structure; please update them to use the current /learn.microsoft.com/ domain for consistency with Microsoft's current documentation platform.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/NetEvolve.Defaults/build/NetEvolve.Defaults.targets (1)

2-2: Thin forwarding to multi-targeting targets is reasonable

Turning this into a simple proxy to ..\buildMultiTargeting\NetEvolve.Defaults.targets keeps the NuGet build surface stable while centralizing logic in one place. The relative path pattern is fine; if you touch this again, you could also use $(MSBuildThisFileDirectory)..\buildMultiTargeting\... for slightly cleaner concatenation, but it’s not required.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 9776bdb and a4d24e9.

📒 Files selected for processing (10)
  • .editorconfig (1 hunks)
  • src/NetEvolve.Defaults/NetEvolve.Defaults.csproj (1 hunks)
  • src/NetEvolve.Defaults/build/NetEvolve.Defaults.props (1 hunks)
  • src/NetEvolve.Defaults/build/NetEvolve.Defaults.targets (1 hunks)
  • src/NetEvolve.Defaults/buildMultiTargeting/NetEvolve.Defaults.props (1 hunks)
  • src/NetEvolve.Defaults/buildMultiTargeting/NetEvolve.Defaults.targets (1 hunks)
  • src/NetEvolve.Defaults/buildMultiTargeting/SupportGeneral.props (0 hunks)
  • src/NetEvolve.Defaults/buildTransitive/NetEvolve.Defaults.props (1 hunks)
  • src/NetEvolve.Defaults/buildTransitive/NetEvolve.Defaults.targets (1 hunks)
  • src/NetEvolve.Defaults/configurations/editorconfig.txt (1 hunks)
💤 Files with no reviewable changes (1)
  • src/NetEvolve.Defaults/buildMultiTargeting/SupportGeneral.props
🔇 Additional comments (9)
src/NetEvolve.Defaults/NetEvolve.Defaults.csproj (2)

20-20: Formatting change is clean and functional.

The ProjectReference has been properly reformatted to a single line without any impact on behavior. The PrivateAssets="None" setting is appropriate for ensuring the analyzer is available to package consumers.


14-14: Correct inclusion of new buildMultiTargeting directory in package.

The new buildMultiTargeting\** entry is properly included in the None ItemGroup for packaging, aligning with the PR's restructuring objective to centralize build configuration under this new layer.

src/NetEvolve.Defaults/configurations/editorconfig.txt (1)

47-47: Verify this change complies with the documented process.

Line 5 explicitly states: "DO NOT CHANGE SETTINGS IN THIS FILE. PLEASE CREATE PULL REQUEST IN REPOSITORY dotnet-engineering." However, this PR modifies line 47. Clarify whether:

  1. The process documented on line 5 has changed and the header should be updated, or
  2. This change should have been submitted to the dotnet-engineering repository instead.

Additionally, this identical change is duplicated in .editorconfig; consider consolidating the source of truth or documenting why both files must be maintained separately.

.editorconfig (1)

47-47: Process concern: File header contradicts change being made.

Like src/NetEvolve.Defaults/configurations/editorconfig.txt, line 5 states: "DO NOT CHANGE SETTINGS IN THIS FILE. PLEASE CREATE PULL REQUEST IN REPOSITORY dotnet-engineering." Verify that this change has followed the appropriate process or update the header if the policy has changed.

Additionally, this change is duplicated across two files. Clarify the intended relationship: should the nested configurations/editorconfig.txt inherit/override settings from this root file, or are they maintained independently?

src/NetEvolve.Defaults/buildMultiTargeting/NetEvolve.Defaults.targets (1)

2-22: Multi-targeting split looks sound; confirm flag naming consistency

Breaking the monolithic import into explicit support imports with per-feature conditions reads clean and gives good control. Paths using $(MSBuildThisFileDirectory)Support*.targets are correct given MSBuild’s trailing-directory behavior.

Only soft ask: double-check that the new/relocated flags (DisableSupportPackageInformation, DisableSupportCopyrightTargets, DisableSupportNuGetAuditTargets, IsTestableProject) match the names you actually set in consuming projects and any docs, so you don’t silently change behavior when this ships.

src/NetEvolve.Defaults/buildTransitive/NetEvolve.Defaults.props (1)

2-2: Transitive props now aligned with centralized multi-targeting props

Pointing buildTransitive at ..\buildMultiTargeting\NetEvolve.Defaults.props is consistent with the rest of the reorg and should ensure transitive consumers pick up the same defaults as direct ones. The relative path and directory step-up look correct.

src/NetEvolve.Defaults/build/NetEvolve.Defaults.props (1)

2-2: Centralizing build props through multi-targeting hub looks correct

Having build/NetEvolve.Defaults.props import ..\buildMultiTargeting\NetEvolve.Defaults.props keeps the package’s primary props surface while moving all logic into the centralized multi-targeting file. This should make future tweaks much easier without changing the NuGet-facing entry point.

src/NetEvolve.Defaults/buildMultiTargeting/NetEvolve.Defaults.props (1)

2-7: Central props hub is coherent and matches targets’ behavior

Importing SupportGeneral.props and CI detection unconditionally, with SupportPackageInformation.props behind DisableSupportPackageInformation, is a clear and flexible setup. This also mirrors the condition used for SupportPackageInformation.targets, so props and targets for that feature will be enabled/disabled together, which avoids subtle mismatches.

src/NetEvolve.Defaults/buildTransitive/NetEvolve.Defaults.targets (1)

2-2: Transitive targets correctly point at the new multi-targeting entry

Routing buildTransitive/NetEvolve.Defaults.targets to ..\buildMultiTargeting\NetEvolve.Defaults.targets matches the pattern used for build/ and keeps transitive behavior aligned with direct references after the reorg. The relative path looks correct.

@samtrion samtrion merged commit fe6304d into main Dec 9, 2025
10 checks passed
@samtrion samtrion deleted the feature/restructured branch December 9, 2025 12:07
@codecov
Copy link
Copy Markdown

codecov Bot commented Dec 9, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (9776bdb) to head (f6a12af).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@     Coverage Diff     @@
##   main   #183   +/-   ##
===========================
===========================

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state:ready for merge Indicates that a pull request has been reviewed and approved, and is ready to be merged into the mai type:feature Indicates a new feature or enhancement to be added.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant