.NET 解決方案 使用 .slnx 取代 .sln

在建立 .NET 「專案」時,其實會建立解決方案(Solution)和專案(Project)。每個解決方案裡面可以有多個專案,例如 API 專案、類別庫專案、單元測試專案等。
解決方案會有 sln 檔案,長久以來的 sln 檔案格式如下:
    
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleAppSlnxTest0327", "ConsoleAppSlnxTest0327\ConsoleAppSlnxTest0327.csproj", "{56FB1FF2-797D-4EB0-AD69-DC3FFF6A1025}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{56FB1FF2-797D-4EB0-AD69-DC3FFF6A1025}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{56FB1FF2-797D-4EB0-AD69-DC3FFF6A1025}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{56FB1FF2-797D-4EB0-AD69-DC3FFF6A1025}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{56FB1FF2-797D-4EB0-AD69-DC3FFF6A1025}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
EndGlobal

    

有非常可怕的 UUID 佔據大部分的版面,一開始會不知道該如何下手,也很可能完全不會動到這個檔案。

在 .NET 9 以後推出了 slnx 檔案,指在使用 XML 格式紀錄最基本的解決方案資訊,讓我們可以方便閱讀。

使用以下的 .NET 9 指令就可以將 .sln 遷移到 .slnx 中(會產生 .slnx 檔案,原始 .sln 檔案不會被刪除):
    
dotnet sln migrate
    

新產生的 .slnx 檔案如下:
    
<Solution>
  <Project Path="ConsoleAppSlnxTest0327/ConsoleAppSlnxTest0327.csproj" />
</Solution>
    

之後把 .sln 檔案刪除即可,不然在執行或打包時會不知道要使用 .sln 還是 .slnx 檔案,就需要手動指定使用的檔案類型。

目前 .slnx 還在預覽中,也只有 Visual Studio 支援,目前 Rider 還不支援,如果刪除 .sln 後專案會無法自動執行。

文章撰寫中...請稍後...

留言