From 5e7051a39d8486f5df86830463e69b2d6aa7055f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 20:54:47 +0000 Subject: [PATCH 1/4] Add documentation-only project to browse docs in Visual Studio Introduce FirstClassErrors.Documentation, a non-compiling project that globs doc/**/*.md so every English (*.en.md) and French (*.fr.md) documentation page, including the analyzer pages under doc/analyzers, shows up in the Visual Studio Solution Explorer and can be read and edited next to the code. New documentation files are picked up automatically by the glob, with no need to touch the project or the solution. The project compiles nothing (EnableDefaultItems=false) and produces no assembly (IncludeBuildOutput=false). It is also excluded from the solution build configurations (no Build.0 entries), so both `dotnet build FirstClassErrors.sln` and "Build Solution" in Visual Studio skip it. No new dependency is introduced. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01MykuaQS64zUdvmqcmW2C3N --- FirstClassErrors.sln | 7 ++++ doc/FirstClassErrors.Documentation.csproj | 39 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 doc/FirstClassErrors.Documentation.csproj diff --git a/FirstClassErrors.sln b/FirstClassErrors.sln index 96795f8..7f8a9f6 100644 --- a/FirstClassErrors.sln +++ b/FirstClassErrors.sln @@ -31,6 +31,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FirstClassErrors.Documentation", "doc\FirstClassErrors.Documentation.csproj", "{0FD6C7A3-6832-491A-96C1-F33F62C56EEB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{F75115F0-25B9-49BC-AE36-A39F2175727A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -73,6 +77,8 @@ Global {2BE1F2DB-4A9E-4616-89BA-9A597B721217}.Debug|Any CPU.Build.0 = Debug|Any CPU {2BE1F2DB-4A9E-4616-89BA-9A597B721217}.Release|Any CPU.ActiveCfg = Release|Any CPU {2BE1F2DB-4A9E-4616-89BA-9A597B721217}.Release|Any CPU.Build.0 = Release|Any CPU + {0FD6C7A3-6832-491A-96C1-F33F62C56EEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0FD6C7A3-6832-491A-96C1-F33F62C56EEB}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -87,6 +93,7 @@ Global {D8B4E1F6-2C7A-4F93-8B05-1E6D9A3C4B72} = {B7C3D08D-EFC5-4F5D-8DE4-5B7938354DBB} {47052422-15BC-482A-8FC0-65F9AAAB0291} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {2BE1F2DB-4A9E-4616-89BA-9A597B721217} = {B7C3D08D-EFC5-4F5D-8DE4-5B7938354DBB} + {0FD6C7A3-6832-491A-96C1-F33F62C56EEB} = {F75115F0-25B9-49BC-AE36-A39F2175727A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4988972E-3E0D-4F48-8656-0E67ECE994BF} diff --git a/doc/FirstClassErrors.Documentation.csproj b/doc/FirstClassErrors.Documentation.csproj new file mode 100644 index 0000000..d450afe --- /dev/null +++ b/doc/FirstClassErrors.Documentation.csproj @@ -0,0 +1,39 @@ + + + + + + netstandard2.0 + false + false + false + false + false + + + + + + + From 3c101c75aaaee274fc34ca2eeec1cd8dcc5995ab Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 21:38:34 +0000 Subject: [PATCH 2/4] Include documentation image assets in the docs project Broaden the documentation project globs so image assets referenced by the Markdown pages (e.g. doc/images/first-class-errors.png) also show up in the Visual Studio Solution Explorer, next to the *.md pages. Common image extensions are covered so future assets are picked up automatically. The project still compiles nothing and stays excluded from the solution build. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01MykuaQS64zUdvmqcmW2C3N --- doc/FirstClassErrors.Documentation.csproj | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/doc/FirstClassErrors.Documentation.csproj b/doc/FirstClassErrors.Documentation.csproj index d450afe..5fce46a 100644 --- a/doc/FirstClassErrors.Documentation.csproj +++ b/doc/FirstClassErrors.Documentation.csproj @@ -3,15 +3,15 @@ + + + + + + From b587c1d92609f509767d569989f364b7297c2801 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 21:41:10 +0000 Subject: [PATCH 3/4] Surface every file under doc/ in the docs project Replace the per-extension globs with a single include that surfaces every file under doc/ (Markdown pages, images and any future asset) in the Visual Studio Solution Explorer, excluding only the build artifacts (obj/, bin/) and the project file itself. This keeps the documentation view complete without having to enumerate file types. The project still compiles nothing and stays excluded from the solution build. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01MykuaQS64zUdvmqcmW2C3N --- doc/FirstClassErrors.Documentation.csproj | 25 ++++++++++------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/doc/FirstClassErrors.Documentation.csproj b/doc/FirstClassErrors.Documentation.csproj index 5fce46a..a55d036 100644 --- a/doc/FirstClassErrors.Documentation.csproj +++ b/doc/FirstClassErrors.Documentation.csproj @@ -3,15 +3,14 @@ - - - - - - - + + From a249906b0e9b2beee0b16c688c0001265be6a954 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 21:53:48 +0000 Subject: [PATCH 4/4] Link the root README into the documentation project Move the main README.md from the "Solution Items" solution folder into the FirstClassErrors.Documentation project, referenced as a linked file (..\README.md with Link metadata) since it lives at the repository root, outside doc/, and cannot be reached by the project glob. This keeps all the documentation entry points grouped under a single project in the Solution Explorer. The .gitignore and LICENSE entries stay in Solution Items. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01MykuaQS64zUdvmqcmW2C3N --- FirstClassErrors.sln | 1 - doc/FirstClassErrors.Documentation.csproj | 13 ++++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/FirstClassErrors.sln b/FirstClassErrors.sln index 7f8a9f6..22f5a1a 100644 --- a/FirstClassErrors.sln +++ b/FirstClassErrors.sln @@ -28,7 +28,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject .gitignore = .gitignore LICENSE = LICENSE - README.md = README.md EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FirstClassErrors.Documentation", "doc\FirstClassErrors.Documentation.csproj", "{0FD6C7A3-6832-491A-96C1-F33F62C56EEB}" diff --git a/doc/FirstClassErrors.Documentation.csproj b/doc/FirstClassErrors.Documentation.csproj index a55d036..b7c492f 100644 --- a/doc/FirstClassErrors.Documentation.csproj +++ b/doc/FirstClassErrors.Documentation.csproj @@ -10,7 +10,8 @@ analyzers/), the images, and any other asset that may be added later. The glob below picks up new files automatically: no need to touch - this project or the solution when documentation is added or renamed. + this project or the solution when documentation is added or renamed. The + repository's root README.md is also linked in, so it is browsable here too. Nothing is built: no *.cs is compiled (EnableDefaultItems=false) and no assembly is produced (IncludeBuildOutput=false). The project is also @@ -40,4 +41,14 @@ + + + + +