Repository navigation
Modernize the build: .slnx solution, SDK-style projects, central package management, C# 14, dotnet build #59
Description
Why
The two projects of this repository are still in the old format, with every file listed by hand. This issue tracks a chain of small pull requests that bring them to what the current Visual Studio extension templates use: an XML solution file, SDK-style projects that include files by globbing (the project files shrink from 181 and 104 lines to 82 and 31), one place for the package versions, a current C# language version and a build that works from the command line with dotnet build. Each pull request is small, builds on its own, is verified on a clean runner in a fork and describes what it changes. None of them changes the code of the extension, and the VSIX keeps its assemblies, manifest and pkgdef.
The pull requests, in merge order
The branches build on each other (each contains the commits of the earlier ones until they are merged), and each pull request can be taken or left as far as the dependencies allow.
- Switch the solution to the
.slnxformat #53 Switch the solution to the.slnxformat - Add instructions, skills and MCP configuration for AI coding agents #54 Add instructions, skills and MCP configuration for AI coding agents (requires Switch the solution to the
.slnxformat #53; replaces Add instructions and configuration for AI coding agents #50, which also contained the.slnxconversion) - Convert the projects to the SDK style #55 Convert the projects to the SDK style (requires Add instructions, skills and MCP configuration for AI coding agents #54, which it updates, and Switch the solution to the
.slnxformat #53) - Move the package versions to central package management #56 Move the package versions to central package management (requires Convert the projects to the SDK style #55)
- Set the C# language version to 14 #57 Set the C# language version to 14 (requires Move the package versions to central package management #56 for the commit order only)
- Build with
dotnet build#58 Build withdotnet build(needs the SDK-style projects of Convert the projects to the SDK style #55; requires Set the C# language version to 14 #57 for the commit order)
What it costs
- The
.slnxneeds Visual Studio 2022 17.13 or later, or the .NET SDK 9.0.200 or later, andnuget restorecannot restore it (msbuild -restoreanddotnet restorecan). - F5 for an SDK-style VSIX project needs Visual Studio 2026 18.5 or later. Building works with Visual Studio 2022 17.14 (the CI) and with 2026.
- C# 14 needs the .NET SDK 10 or Visual Studio 2026 on a development machine; the
windows-2022image has the SDK 10. - The signing target in
src/signvsix.targetshas to be calledSignAndCopyVsixinstead ofAfterBuild, because in an SDK-style project the SDK replacesAfterBuildand the signing would silently never run (checked with a fakesigntool; the real signing was not run). - Three
.pdbfiles of NuGet packages are no longer in the VSIX, and the.pdbof the extension is a portable PDB.
Not part of this
- The unit tests keep MSTest 3.6.3 with the VSTest adapter; moving to a newer MSTest and
dotnet test(which needsMicrosoft.NET.Test.Sdk) can be a follow-up. - Watch .slnx solution files as well as .sln #51 (the extension watching
.slnxsolutions of its users) is independent. It adds aCompileline to the old test project, so whichever of it and the SDK-style conversion is merged second needs a trivial rebase. - The step
Publish Test Resultsofbuild.yamlfails today onwindows-2022, also onmain, because the image has no Python for that third-party action (actions/setup-pythonbefore it would fix that).
Not verified: running the extension in the Experimental instance, F5 from Visual Studio 2022, and the signing with the real certificate.
Activity