Skip to content

Diagram of VS/SDK component interactions#13127

Merged
JanProvaznik merged 3 commits intodotnet:mainfrom
rainersigwald:components-diagram
Jan 29, 2026
Merged

Diagram of VS/SDK component interactions#13127
JanProvaznik merged 3 commits intodotnet:mainfrom
rainersigwald:components-diagram

Conversation

@rainersigwald
Copy link
Copy Markdown
Member

We used this diagram a bunch during .NET 10 planning. It came up again today and it shouldn't be trapped in my corporate OneDrive.

Interactive diagram showing where build components come from in
different build scenarios.
We didn't get netcore-taskhost widely used for .NET 10.
Copilot AI review requested due to automatic review settings January 27, 2026 21:24
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a self-contained diagram (previously kept externally) documenting how Visual Studio, the .NET SDK, MSBuild components, and user repos interact, with simple interactive highlighting for common scenarios.

Changes:

  • Added a new HTML document containing an interactive “layer diagram” of VS/SDK/user-repo component composition.
  • Implemented CSS-only highlighting via radio buttons to visualize different build/design-time scenarios.

Comment on lines +157 to +159
<div class="component user sdkbuild vsbuild vsbuild10 designtime"><tt>global.json</tt></div>
<div class="component user sdkbuild vsbuild vsbuild10 designtime"><tt>Directory.Build.props</tt></div>
<div class="component user sdkbuild vsbuild vsbuild10 designtime"><tt>Foo.csproj</tt></div>
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

<tt> is obsolete in HTML5; these filenames would be better marked up with <code> for correct semantics and more consistent rendering.

Copilot uses AI. Check for mistakes.
Comment on lines +57 to +61
outline:none;
}

#diagram div {
outline: 1px solid #c8c8c8;
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

.component { outline: none; } is effectively overridden by #diagram div { outline: ... } due to selector specificity, so the outline:none doesn’t take effect. Either remove the redundant outline:none or narrow #diagram div so it only targets the elements you intend to outline (e.g., components vs. container/header divs).

Copilot uses AI. Check for mistakes.
Comment on lines +118 to +127
<label for="sdkbuild">Build with <tt>dotnet build</tt></label>
<br>
<input type="radio" name="buildOption" id="designtime" value="designtime">
<label for="designtime">VS project load/Design-time build</label>
<br>
<input type="radio" name="buildOption" id="vsbuild" value="vsbuild">
<label for="vsbuild">Build with <tt>MSBuild.exe</tt> or VS F5</label>
<br>
<input type="radio" name="buildOption" id="vsbuild10" value="vsbuild10">
<label for="vsbuild10">Build with <tt>MSBuild.exe</tt> or VS F5 (.NET 10+)</label><br>
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

This doc uses <tt> for inline code/filenames, but <tt> is obsolete in HTML5 and has inconsistent styling across browsers. Prefer <code> (optionally styled via CSS) for dotnet build, MSBuild.exe, filenames, etc.

Suggested change
<label for="sdkbuild">Build with <tt>dotnet build</tt></label>
<br>
<input type="radio" name="buildOption" id="designtime" value="designtime">
<label for="designtime">VS project load/Design-time build</label>
<br>
<input type="radio" name="buildOption" id="vsbuild" value="vsbuild">
<label for="vsbuild">Build with <tt>MSBuild.exe</tt> or VS F5</label>
<br>
<input type="radio" name="buildOption" id="vsbuild10" value="vsbuild10">
<label for="vsbuild10">Build with <tt>MSBuild.exe</tt> or VS F5 (.NET 10+)</label><br>
<label for="sdkbuild">Build with <code>dotnet build</code></label>
<br>
<input type="radio" name="buildOption" id="designtime" value="designtime">
<label for="designtime">VS project load/Design-time build</label>
<br>
<input type="radio" name="buildOption" id="vsbuild" value="vsbuild">
<label for="vsbuild">Build with <code>MSBuild.exe</code> or VS F5</label>
<br>
<input type="radio" name="buildOption" id="vsbuild10" value="vsbuild10">
<label for="vsbuild10">Build with <code>MSBuild.exe</code> or VS F5 (.NET 10+)</label><br>

Copilot uses AI. Check for mistakes.
<div class="component dual sdkbuild">MSBuild Common.targets</div>
<div class="component dual sdkbuild vsbuild10">Roslyn Compilers</div>
<div class="component dual sdkbuild">Common Analyzers</div>
<div class="component sdk sdkbuild"><tt>dotnet</tt> CLI</div>
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

<tt> is obsolete in HTML5. Prefer <code> for inline code like dotnet (and style it via CSS if you want a monospaced look).

Copilot uses AI. Check for mistakes.
Comment on lines +129 to +131
<div id="diagram" class="holder">
<div class="distribution">
<div class="header vs">Visual Studio</div>
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

GitHub doesn’t render repository .html files as pages in the normal file view, so this diagram won’t be directly viewable without using “Raw”/downloading. Consider adding a short instruction near the top (how to view), and/or adding a rendered PNG/SVG + a .md wrapper so the diagram is visible in GitHub’s documentation flow (similar to other diagrams in documentation/*.md).

Copilot uses AI. Check for mistakes.
}

body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, sans-serif;
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

font-family list ends with ..., sans-serif, sans-serif; (duplicate fallback). Removing the extra sans-serif avoids confusion and keeps the style declaration clean.

Suggested change
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, sans-serif;
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;

Copilot uses AI. Check for mistakes.
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive Layer Diagram</title>
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

The page <title> (“Interactive Layer Diagram”) doesn’t match the main heading (“MSBuild/.NET SDK/Visual Studio Interactions”). Aligning them makes the document easier to find/bookmark and reduces ambiguity in browser tabs/history.

Suggested change
<title>Interactive Layer Diagram</title>
<title>MSBuild/.NET SDK/Visual Studio Interactions</title>

Copilot uses AI. Check for mistakes.
Comment on lines +123 to +127
<input type="radio" name="buildOption" id="vsbuild" value="vsbuild">
<label for="vsbuild">Build with <tt>MSBuild.exe</tt> or VS F5</label>
<br>
<input type="radio" name="buildOption" id="vsbuild10" value="vsbuild10">
<label for="vsbuild10">Build with <tt>MSBuild.exe</tt> or VS F5 (.NET 10+)</label><br>
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

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

This doc uses <tt> for inline code, which is obsolete in HTML5. Consider switching these to <code> for better semantics and accessibility.

Copilot uses AI. Check for mistakes.
@JanProvaznik JanProvaznik merged commit b01681e into dotnet:main Jan 29, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants