What is wrong with this .csproj?
Paste or drop your MSBuild files - one project, or a project with its Directory.Build.props, Directory.Build.targets and the projects it references. Your browser parses every file and checks it against the MSBuild anti-pattern catalogue: unquoted conditions, hardcoded paths, $(TargetFramework) conditions in .props that never match, publish-on-build forks and SetTargetFramework races that lock files in CI, defaults in .targets that silently override a project, analyzers that leak to consumers, duplicate Compile items. Free, before you sign in, and nothing is uploaded. Then pick a lane: the audit confirms or dismisses each flag and writes the fix, or modernize rewrites a legacy project to SDK-style - checked against your files before you trust it.
The projects in the examples are invented. The first three are audits, the last three modernize runs; each comes with a saved model reply, so you can see the whole page without signing in or spending a credit.
The audit confirms or dismisses every flag below, adds what text rules cannot see, and gives the BAD and GOOD XML for each finding.
What this does, and what it does not
The check is a reading of the text, not a build: nothing runs MSBuild, restores packages or resolves imports. Each file is parsed with its line numbers, conditions are tokenised to see whether both sides of every comparison are quoted, and each flag carries the catalogue id it comes from and the line it points at. Cross-file checks only see what you paste: paste Directory.Build.props and .targets with the projects to catch a .targets file overriding a project, and the referenced project to confirm a SetTargetFramework race. Legacy projects get an inventory of everything an SDK-style rewrite must keep.
The paid lanes see your files and the page's flags, and are told what the page cannot know. Every quote, line, fix, package version, reference and target they return is checked against your files. A paste stays in this browser unless you run a lane. Derived from the agent skills @dotnet/msbuild-antipatterns and @dotnet/msbuild-modernization (dotnet/skills, MIT). Sources are listed in llms.txt.