The New .slnx Solution Format (migration guide)
ุงูู Solution files ุฏุงูู ุงู ูุงูุช ูู ุงูู ูู ุงููู ู ููุด ุญุฏ ุนุงูุฒ ููู ุณู ููุช ุงูู merge conflict. ุฃูุง ูุณู ูุงูุฑ ุงูู ุนุงูุงุฉ ุจุชุงุนุฉ ุญู ุงูู conflicts ูู ุงูู monorepos ุงููุจูุฑุฉ ุงููู ูููุง ู ุฆุงุช ุงูู ุดุงุฑูุนุ ูุจุตุฑุงุญุฉ ุงูู ูุถูุน ู ููุด ููู ุฃู ููุน ู ู ุฃููุงุน ุงูู ุชุนุฉ.
ุดุฑูุฉ Microsoft ุฃุฎูุฑุงู ุจุฏุฃุช ุชุญู ุงูุฃุฒู ุฉ ุฏู ุจุชูุฏูู ุงูู .slnx: ูุฏู ุนุจุงุฑุฉ ุนู XML-based formatุ ุจุณูุทุ ูู ุตู ู ุนุดุงู ูููู ุฃุณูู ูู ุงููุฑุงูุฉุ ุงูุชุนุฏููุ ูุงูู merge. ูุฏู ุงูุฏููู ุงูุนู ูู ุจุชุงุนู ูู ุณุชูุจู ุงูู .NET solutions.
The Problem with .sln
ู ููุงุช ุงูู .sln ุงูุชูููุฏูุฉ โุฑุบุงูุฉโ ุฌุฏุงู (verbose): ู ููุงูุฉ GUIDs ููู ู ุดุฑูุนุ ููู ุงู ูููุง Blocks ููู configuration ุจุชูุจุฑ ุจุดูู ู ุฑุนุจ ูู ู ุง ุงูู solution ููุจุฑ. ูุฏู ุจูุฎูููุง ู ุตุฏุฑ ุฏุงูู ููู merge conflicts.
ุนุดุงู ููุฏุฑ ููู ุฉ ุงูู format ุงูุฌุฏูุฏุ ูุงุฒู ูุจุต ุจุตุฉ ุนูู ุงูุดูู ุงููุฏูู . ุฏู ู ูู .sln ุชูููุฏู ูู solution ุญุฌู ู ู ุชูุณุท:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.7.34031.279
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8FC526EA-218B-4615-8410-4E1850611F38}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
Directory.Build.props = Directory.Build.props
Directory.Packages.props = Directory.Packages.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{64A28C1B-09AF-426E-8721-D002BE554B48}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharedKernel", "src\SharedKernel\SharedKernel.csproj", "{166778A2-518F-47F0-BBC7-DB49C76A963C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Domain", "src\Domain\Domain.csproj", "{6448ADE8-34BC-4F2F-A68C-5B2D6BF4FB0B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Application", "src\Application\Application.csproj", "{0F576D4A-156D-4626-A4D5-83DD0F6FAFE7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Infrastructure", "src\Infrastructure\Infrastructure.csproj", "{C699FD09-4D82-4C4B-8744-4FD3B0D60EFC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Web.Api", "src\Web.Api\Web.Api.csproj", "{86506D03-3746-41E7-A645-97D3633981DB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{1EB88D85-BE1E-46DE-99A2-2F02363060AF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ArchitectureTests", "tests\ArchitectureTests\ArchitectureTests.csproj", "{8D8E2A8A-D3FE-4230-BEF7-C427D6BD87DA}"
EndProject
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{34BB3069-D5D0-4046-ACAD-A2025ED7678F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{166778A2-518F-47F0-BBC7-DB49C76A963C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{166778A2-518F-47F0-BBC7-DB49C76A963C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{166778A2-518F-47F0-BBC7-DB49C76A963C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{166778A2-518F-47F0-BBC7-DB49C76A963C}.Release|Any CPU.Build.0 = Release|Any CPU
{6448ADE8-34BC-4F2F-A68C-5B2D6BF4FB0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6448ADE8-34BC-4F2F-A68C-5B2D6BF4FB0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6448ADE8-34BC-4F2F-A68C-5B2D6BF4FB0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6448ADE8-34BC-4F2F-A68C-5B2D6BF4FB0B}.Release|Any CPU.Build.0 = Release|Any CPU
{0F576D4A-156D-4626-A4D5-83DD0F6FAFE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0F576D4A-156D-4626-A4D5-83DD0F6FAFE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0F576D4A-156D-4626-A4D5-83DD0F6FAFE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0F576D4A-156D-4626-A4D5-83DD0F6FAFE7}.Release|Any CPU.Build.0 = Release|Any CPU
{C699FD09-4D82-4C4B-8744-4FD3B0D60EFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C699FD09-4D82-4C4B-8744-4FD3B0D60EFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C699FD09-4D82-4C4B-8744-4FD3B0D60EFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C699FD09-4D82-4C4B-8744-4FD3B0D60EFC}.Release|Any CPU.Build.0 = Release|Any CPU
{86506D03-3746-41E7-A645-97D3633981DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{86506D03-3746-41E7-A645-97D3633981DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{86506D03-3746-41E7-A645-97D3633981DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{86506D03-3746-41E7-A645-97D3633981DB}.Release|Any CPU.Build.0 = Release|Any CPU
{8D8E2A8A-D3FE-4230-BEF7-C427D6BD87DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D8E2A8A-D3FE-4230-BEF7-C427D6BD87DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D8E2A8A-D3FE-4230-BEF7-C427D6BD87DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D8E2A8A-D3FE-4230-BEF7-C427D6BD87DA}.Release|Any CPU.Build.0 = Release|Any CPU
{34BB3069-D5D0-4046-ACAD-A2025ED7678F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34BB3069-D5D0-4046-ACAD-A2025ED7678F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34BB3069-D5D0-4046-ACAD-A2025ED7678F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34BB3069-D5D0-4046-ACAD-A2025ED7678F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{166778A2-518F-47F0-BBC7-DB49C76A963C} = {64A28C1B-09AF-426E-8721-D002BE554B48}
{6448ADE8-34BC-4F2F-A68C-5B2D6BF4FB0B} = {64A28C1B-09AF-426E-8721-D002BE554B48}
{0F576D4A-156D-4626-A4D5-83DD0F6FAFE7} = {64A28C1B-09AF-426E-8721-D002BE554B48}
{C699FD09-4D82-4C4B-8744-4FD3B0D60EFC} = {64A28C1B-09AF-426E-8721-D002BE554B48}
{86506D03-3746-41E7-A645-97D3633981DB} = {64A28C1B-09AF-426E-8721-D002BE554B48}
{8D8E2A8A-D3FE-4230-BEF7-C427D6BD87DA} = {1EB88D85-BE1E-46DE-99A2-2F02363060AF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B948A3CC-9872-4612-ABD2-BB3D49671542}
EndGlobalSection
EndGlobalุญุธ ุณุนูุฏ ุจูู ูุฃูุช ุจุชุญุงูู ุชููู ุฃู ุญุงุฌุฉ ู ู ุงูููุงู ุฏู ูุฃูุช ุจุชุญู merge conflict!
What .slnx looks like
ุงูู .slnx ุงูุจุณูุท ูู ุฃุณุงุณุงู ุนุจุงุฑุฉ ุนู ูุณุชุฉ ู ุดุงุฑูุน ู ูุชูุจุฉ ุจู XML.
ุฏู ููุณ ุงูู solution ุงููู ููู ุจุงูุธุจุทุ ุจุณ ุจู format ุงูู .slnx. ูุชูุงุญุธ ุฅููุง ูุณู ุนูุฏูุง ุงูู solution itemsุ ุงูู foldersุ ูุญุชู ุงูู docker-compose project:
<Solution>
<Folder Name="/Solution Items/">
<File Path=".editorconfig" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
</Folder>
<Folder Name="/src/">
<Project Path="src/Application/Application.csproj" />
<Project Path="src/Domain/Domain.csproj" />
<Project Path="src/Infrastructure/Infrastructure.csproj" />
<Project Path="src/SharedKernel/SharedKernel.csproj" />
<Project Path="src/Web.Api/Web.Api.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/ArchitectureTests/ArchitectureTests.csproj" />
</Folder>
<Project Path="docker-compose.dcproj">
<Build />
</Project>
</Solution>ุงูุดูู ุฏู ุดุจู ุงูู .csproj file ุฌุฏุงู.
How to Migrate Today
ุงูู format ุงูุฌุฏูุฏ .slnx ู ุชุงุญ ุญุงููุงู ูู ุงูุฅุตุฏุงุฑุงุช ุงูุฃุฎูุฑุฉ ู ู ุงูู Visual Studio 2022 (v17.13+) ูุงูู .NET 9 SDK. ูุฏู ุงูุทุฑููุฉ ุงููู ุชูุฏุฑ ุชุญูู ุจููุง:
Option 1: The Command Line
ูู ุนูุฏู ุงูู .NET 9 SDK ู ุชุณุทุจ (ุชุญุฏูุฏุงู ุฅุตุฏุงุฑ 9.0.200 ุฃู ุฃุญุฏุซ)ุ ุชูุฏุฑ ุชุญูู ููุฑุงู ุนู ุทุฑูู ุงูู CLI:
- ุงูุชุญ ุงูู terminal ูู ุงููููุฏุฑ ุจุชุงุน ุงูู solution.
- ุดุบู ุฃู ุฑ ุงูุชุญููู:
dotnet sln migrateุฏู ููุนู ู ู ูู .slnx ุฌุฏูุฏ ุฌูุจ ู ูู ุงูู .sln ุงููุฏูู ุจุชุงุนู. ูู ุงูู ุฑุญูุฉ ุฏูุ ุฃูุตุญู ุชู ุณุญ ู ูู ุงูู .sln ุงููุฏูู ุนุดุงู ู ุชุชูุฎุจุทุดุ ู ููุด ูุงูุฏุฉ ุฅูู ุชุณูุจ ุงูุงุชููู ูู ููุณ ุงูู repo.
Option 2: Visual Studio โSave Asโ
ูู ุจุชูุถู ุชุณุชุฎุฏู ุงูู GUIุ ุชูุฏุฑ ุชุนู ู ุฏู ู ู ุฌูู Visual Studio 2022 (ุฃู 2026):
- ุงุฎุชุงุฑ ุงูู Solution ู ู ุงูู Solution Explorer.
- ุฑูุญ ูู File > Save Solution Asโฆ
- ุบูุฑ ุงูู dropdown ุจุชุงุน โSave as typeโ ูู Xml Solution File (*.slnx).
Why You Should Care
- ุงูู Fewer Merge Conflicts: ุฏู ุงูู ูุฒุฉ ุฑูู 1. ุนุดุงู ุงูู ูู ุนุจุงุฑุฉ ุนู XML ุจุณูุท ูู ู ุบูุฑ GUIDs ุนุดูุงุฆูุฉ ุจุชุชุบูุฑ ูู ุดููุฉุ ุงูู git merges ุจุชุจูู ุชุงููุฉ.
- ุงูู Human Readable: ุชูุฏุฑ ุชูุชุญ ุงูู ูู ุฏู ูู Notepad ูุชููู ู ูุชุนุฏู ููู ู ู ุบูุฑ ู ุง ุชุจูุธ ุงูู build ุจุชุงุนู ููู.
- ุงูู Consistency: ุฃุฎูุฑุงู ุจูู ุดูู ุงูู solution ู ุชู ุงุดู ู ุน ุดูู ุงูู project (.csproj)ุ ุงููู ุงุชุญูู ูู XML ู ุจุณุท ู ู ุณููู.
- ุงูู Performance: ุญุฌู ู ููุงุช ุฃุตุบุฑ ู parsing ุฃุณููุ ูุฏู ู ุนูุงู ุณุฑุนุฉ ุชุญู ูู (load times) ุฃุญุณู ุดููุฉ ูู ุงูู solutions ุงูุนู ูุงูุฉ.
Visual Comparison
graph TD subgraph "Old Format (.sln)" A[GUID-based Header] --> B[Complex Project Sections] B --> C[Manual GUID Mapping] C --> D[Massive Configuration Blocks] end subgraph "New Format (.slnx)" E[Simple XML Tag] --> F[Folder Elements] F --> G[Project Paths] G --> H[Human Readable Structure] end
Is it Ready?
ูู ุฃูุงุฎุฑ 2025 ูุจุฏุงูุฉ 2026ุ ุงูู .slnx ูุณู ูุนุชุจุฑ Preview feature ุชูููุงู.
- ูู ุขู ู ููุงุณุชุฎุฏุงู ุ ุฃูููุ ุงูู format ููุณู ู ุณุชูุฑ.
- ุฏุนู ุงูุฃุฏูุงุชุ ุงูู Visual Studio 2022 ู Visual Studio 2026 ู Rider ุจูุฏุนู ูู ูููุณ ุฌุฏุงูุ ููุฐูู ุงูู .NET CLI. ู ู ูู ุจุนุถ ุงูู pipelines ุงููุฏูู ุฉ (CI/CD) ุฃู ุฃุฏูุงุช ุงูู 3rd party ู ุชุชุนุฑูุด ุนูู ุงูุงู ุชุฏุงุฏ ุฏู ูุณู.
ูุตูุญุชู: ุฌุฑุจู ุงูุฃูู ุนูู side project ุฃู branch ููุญุฏู. ูู ุงูู CI pipeline ุจุชุงุนุชู ุชู ุงู ุ ูุจูู ุฃูุช ุฌุงูุฒ ููุชุญุฏูุซ. ุฃูุง ุดุฎุตูุงู ุจุณุชุฎุฏู ุงูู format ุฏู ูู ูู ู ุดุงุฑูุนู ุงูุฌุฏูุฏุฉ ูุญููุช ูุฐุง ู ุดุฑูุน ู ูุฌูุฏ ูุนูุงู ูู ูุงุฌูุชุด ุฃู ู ุดุงูู.
Notes
- ููุทุฉ ุงูู GUIDs ูู ุงูู .sln ุงููุฏูู ูุงูุช ุถุฑูุฑูุฉ ูู Visual Studio ุนุดุงู ูุฑุจุท ุงูู ุดุงุฑูุน ุจุจุนุถูุงุ ููู ูู ุงูู .slnx ุงูู IDE ุจููุฏุฑ ูุชุนุงู ู ู ุน ุงูู paths ุจุดูู ุฃุฐูู ููููุฏ ุงูู IDs ุฏู ูู ุงูู memory ููุช ุงูู runtime ุจุฏู ู ุง ูุฎุฒููุง ูู ุงูู ูู.
- ุดุฑูุฉ Microsoft ุจุชุฎุทุท ุฅู ุงูู .slnx ูููู ูู ุงูู default format ูู
ุง ุชูุฌู ุชุนู
ู
dotnet new slnูู ุงูู ุณุชูุจู ุงููุฑูุจุ ูุฏู ููุฎูู ุงูุงุนุชู ุงุฏ ุนููู ู ุด ู ุฌุฑุฏ ุงุฎุชูุงุฑ ุจู ูู ุงูู standard ุงูุฌุฏูุฏ. ูู ุงู ุงูู .NET 10 SDK ุจููุฏู ุชุญุณููุงุช ูู ุณุฑุนุฉ ุงูู discovery ููู ุดุงุฑูุน ุฌูู ุงูู .slnx.