From roslyn-mcp
MSBuild and project-file inspection. Use when: debugging TargetFramework, OutputPath, package references, item includes, or evaluated MSBuild properties for a .csproj.
npx claudepluginhub darylmcd/roslyn-backed-mcp --plugin roslyn-mcpThis skill uses the workspace's default tool permissions.
You answer "what does MSBuild think this project is?" using **`evaluate_msbuild_property`**, **`evaluate_msbuild_items`**, and **`get_msbuild_properties`**.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
You answer "what does MSBuild think this project is?" using evaluate_msbuild_property, evaluate_msbuild_items, and get_msbuild_properties.
Resolve:
workspaceId (active session)projectFilePath (.csproj or relevant project file)TargetFramework) or item type (e.g. PackageReference)Use roslyn://server/catalog under project-mutation / configuration. MCP prompt msbuild_inspection emits a checklist for this workspace + project path.
evaluate_msbuild_property.evaluate_msbuild_items with the item type.get_msbuild_properties (large — filter to what matters).workspace_reload before trusting compilation or symbol tools.Invoke with --validate-shape or ask "is this project set up right?". The skill runs a consistency sweep over one project (or every project in the workspace) and flags common defaults-drift.
For each project, check:
| Check | Default expected | Signal when missing/inconsistent |
|---|---|---|
TargetFramework / TargetFrameworks | Present; matches solution-wide convention when one exists | Orphan or legacy TFM (e.g., net462 in a mostly-net8.0 solution) |
Nullable | enable recommended for new code | disable or missing on a library in an otherwise-nullable solution |
ImplicitUsings | enable for SDK-style projects | Missing / disabled |
LangVersion | Implicit (inherits from TFM) | Pinned to an old version (latest or a specific version below what TFM allows) |
TreatWarningsAsErrors | Typically true for production libraries | Missing in a library where siblings enable it |
GenerateDocumentationFile | true for packable libraries | Missing when IsPackable=true |
IsPackable | false for test/sample projects | true on a project whose name ends .Tests / .Samples |
OutputType | Library by default; Exe only for hosts | Exe in a project consumed as a package dependency |
RootNamespace vs folder path | Aligned | Drift (package extracts from a folder that doesn't match namespace) |
AssemblyName vs PackageId (packable) | Typically equal | Divergent without explicit intent |
| Project references in SDK-style | Use <ProjectReference> | Direct <Reference> assembly paths indicate legacy style |
Workflow:
evaluate_msbuild_property for each of the properties above (per project).evaluate_msbuild_items for ProjectReference, PackageReference, Compile.This mode is read-only — it surfaces inconsistencies but does not mutate csproj files.
This skill is read-only. Package and project edits use add_package_reference_preview, apply_project_mutation, etc., only when the user asks to change files.