Aalexbit-codemod

dotnet-migration-assessment-bundle

Read-only workflow bundle that runs all .NET Framework → .NET 8 migration assessment miners (project inventory, NuGet dependencies, C# patterns, and config patterns) in one pass.

miningmetricsdotnetmigration-assessmentbundlerecipe
PublicBundle
10 executions

Run locally

npx codemod dotnet-migration-assessment-bundle

dotnet-migration-assessment-bundle

Read-only workflow bundle for migration assessment ahead of large .NET Framework → modern .NET (e.g. .NET 8) moves. It runs 4 atomic mining codemods/analyzers in one pass and accumulates metrics in the Codemod run output — no files are written to the target repo.

Use it to baseline project shape, dependency risk, legacy code patterns, and configuration surface area before you commit to a migration plan or estimate.

Metrics

Each metric is emitted as a counted cardinality record: a set of metadata fields (cardinality) plus a count. Below are the seven primary metrics, their fields, and representative examples from fixture runs.

dotnet-project-inventory

Per-project classification from .csproj / .vbproj files.

FieldDescription
projectPathRelative path to the project file
projectNameProject name (filename without extension)
projectTypeDetected archetype (aspnet-mvc, webforms, wcf, ef6, console, library, test, …)
targetFrameworkCurrent TFM (e.g. net472, net48)
sdkStyleyes if SDK-style project, otherwise no
languagecsharp or vb
outputTypeLibrary, Exe, WinExe, …
isTestProjectyes / no
migrationTargetSuggested destination (e.g. ASP.NET Core MVC, EF Core, Rewrite)
json

dotnet-solution-inventory

Solution-level footprint from .sln files.

FieldDescription
solutionPathRelative path to the solution file
projectCountNumber of projects referenced in the solution
json

dotnet-loc-inventory

Non-blank line counts for .cs and .vb source files — useful for sizing rewrite effort.

FieldDescription
fileRelative path to the source file
languagecsharp or vb
locNon-blank line count
json

dotnet-framework-migration-matrix

Aggregated migration signals rolled up by detected technology — a quick view of what you have and where it should land.

FieldDescription
technologyProject archetype (aspnet-mvc, webforms, wcf, ef6, …)
migrationSuggested migration destination
countNumber of projects with this technology (always "1" per record; aggregate in dashboards)
json

dotnet-nuget-dependency

Per-dependency migration risk from PackageReference, packages.config, GAC, and HintPath references.

FieldDescription
packageIdNuGet package or assembly name
versionResolved version (empty for GAC / some binary refs)
sourcePackageReference, packages.config, gac, hintpath
projectPathProject that references the package
riskTiersupported, requires-upgrade, deprecated, unsupported, custom-binary, gac
riskSeverity: low, medium, high, critical
targetVersionRecommended replacement or upgrade target
json

dotnet-csharp-pattern

Legacy platform APIs and migration-sensitive code patterns in .cs files.

FieldDescription
patternDetected pattern name (e.g. HttpContext.Current, BinaryFormatter, EF6 DbContext)
categorycode-pattern or platform
autoFixCodemod feasibility: yes, partial, no
risklow, medium, high, critical
fileSource file path
lineLine number of the finding
snippetShort matched text
json

dotnet-config-pattern

Legacy configuration in App.config, Web.config, and transform files.

FieldDescription
patternConfig section or pattern (e.g. system.web, entityFramework config, appSettings)
configTypeconfig, transform, settings, runtime, web, ef
autoFixCodemod feasibility: yes, partial, no
risklow, medium, high
fileConfig file path
matchCountNumber of matches in the file
json

Bundled miners

StepCodemodMetrics
1dotnet-project-inventory-miningdotnet-project-inventory, dotnet-solution-inventory, dotnet-loc-inventory, dotnet-archetype-signal, dotnet-framework-migration-matrix
2dotnet-nuget-dependency-miningdotnet-nuget-dependency
3dotnet-csharp-pattern-miningdotnet-csharp-pattern
4dotnet-config-pattern-miningdotnet-config-pattern

Need a deeper assessment?

These analyzers are a solid starting point for portfolio-wide baselines, but every legacy .NET estate has its own frameworks, internal libraries, and migration constraints. The patterns, risk tiers, and migration targets here reflect common cases — not your specific codebase.

Reach out to the Codemod team if you want a more advanced version of these analyzers tailored to your stack: custom pattern libraries, org-specific NuGet compatibility rules, archetype detection for internal frameworks, and dashboards wired to your migration milestones.

Ready to contribute?

Build your own codemod and share it with the community.