跳至页脚内容
Iron Academy Logo
C# 和 .NET 中的新内容

.NET 9 中的 SLNX 文件--为什么它们很重要

Tim Corey
8分33秒

随着 .NET 9 的发布,微软为开发人员引入了一项微妙但强大的增强功能:SLNX 文件格式。 这种新的解决方案文件格式比传统的 .sln 文件更简洁、更易于维护,而 .sln 文件长期以来一直是 Visual Studio 开发的基石。 在题为" .NET 9 中的 SLNX 文件 - 为什么它们很重要"的 8 分钟培训视频中,受欢迎的 .NET 教育家 Tim Corey 详细讲解了 SLNX 文件是什么、为什么它很重要以及它如何改进日常开发。

让我们详细了解一下 Tim 为 .NET 开发人员制作的这个新功能的视频。

SLNX 简介:.NET 9 的全新解决方案文件格式

首先,Tim 介绍了 .NET 9 能够将传统的 .sln 文件转换为新的 .slnx 文件格式。 这种新的解决方案格式旨在解决开发人员在使用现有 Visual Studio 解决方案文件时遇到的常见痛点——即复杂性、可读性差和混乱的合并冲突。

蒂姆解释说,他的视频是系列视频的一部分,旨在提供快速而实用的解释。 在这种情况下,解释完全集中在 SLNX 上——它是什么,它解决了什么问题,以及如何采用它。

什么是解决方案文件(.sln)? 旧格式

为了解释为什么我们需要一种新的解决方案格式,Tim 首先回顾了当前的 .sln 文件——这是在使用 Blazor Web App 等模板时自动创建的文件。

他解释说,解决方案文件本质上是一个"桶",它将项目文件分组在一起。 这些项目甚至可能彼此之间没有直接关联; sln 格式只是告诉 Visual Studio 在加载解决方案时要打开什么。

因此,虽然 SLN 文件发挥着至关重要的作用,但它的结构已经过时且杂乱无章。

Visual Studio 解决方案文件内部机制(VS Code)

然后,Tim 在 Visual Studio Code 中打开一个示例 .sln 文件,展示了其内部结构。 他讲解了一些典型内容,例如:

  • Microsoft Visual Studio 解决方案文件,格式版本 12.00

  • Visual Studio 版本 17.0(指的是 IDE 版本,而不是年份)

  • 项目 GUID,例如 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")

  • GlobalSection(SolutionConfigurationPlatforms) = preSolution

  • 构建配置行,例如 Debug|任何 CPU 和版本|任何 CPU

  • 结尾的"项目结束"和"全局"部分

Tim 指出,旧的解决方案文件格式充斥着不必要的标识符,包括臭名昭著的 FAE04EC0-301F-11D3-BF4B-00C04F79EFBC GUID 的多个实例——该 GUID 用于表示 .NET 项目。 这些文件内容冗长,难以阅读,而且手动编辑极其困难。

SLN格式的问题:合并冲突和手动编辑

Tim深入探讨了SLN文件的相关问题:

由于文件复杂,手动编辑存在风险。

合并冲突在团队环境中很常见

许多字段冗余且过于详细。

版本控制友好度差

他指出,这些文件随着时间的推移而不断增长,并且充斥着无关数据,例如构建目标、GUID 和冗长的语法。

启用 SLNX 文件格式:Visual Studio 中的预览功能

为了采用 SLNX 文件格式,Tim 展示了如何通过 Visual Studio 的预览功能启用它。 在"工具"→"选项"下,开发人员必须启用名为"使用解决方案文件持久性模型"的选项。此选项会激活将解决方案保存为 .slnx 文件扩展名而不是 .sln 文件扩展名的功能。

这是微软实验性功能的一部分,但在 Visual Studio 2022 及更高版本中已完全开放测试。

将解决方案另存为 SLNX

启用预览功能后,您可以转到"文件"→"另存为",然后在下拉菜单中选择"XML 解决方案文件 (.slnx)"。 Tim 通过一个名为 SolutionDemoApp 的示例解决方案来演示这一点。

保存后,目录中会出现 .sln 和 .slnx 文件。 Tim 建议您删除旧格式 (.sln) 文件,以免造成混淆。

SLNX 文件结构分析

在 VS Code 中打开新建的 SLNX 文件,可以看到其结构简洁明了:

<Solution>
  <Project>./SolutionDemo</Project>
  <Project>./SolutionDemoClient</Project>
</Solution>
<Solution>
  <Project>./SolutionDemo</Project>
  <Project>./SolutionDemoClient</Project>
</Solution>

蒂姆指出了关键区别:

  • 无 GUID

  • 没有 EndProject 或 GlobalSection 块

  • 除非明确更改,否则不进行调试/发布配置

  • 仅支持项目文件的相对路径

这种极简设计更符合开发者真正关心的内容,例如项目名称、路径,以及保持结构清晰以便于使用 Git 等版本控制系统。

SLNX 文件有魔法吗? 不完全是,但更好

Tim 重申,SLNX 格式并没有增加新的行为——它仍然是一个用于管理项目文件的容器。 但它更容易理解、编辑和分享。 这才是真正的益处。

其中一个显著优势是解决合并冲突变得容易得多。 使用 .slnx 文件,您可以清楚地看到哪些项目已被添加或删除,并且可以手动编辑文件而不会破坏它。

大型解决方案的生活质量提升

蒂姆表示,新的解决方案文件持久化模型尤其适用于以下情况:

  • 包含众多项目的大型解决方案

  • 经常进行协作和合并的项目

  • 喜欢简洁易读的 XML 语法而非臃肿语法的开发者

这虽然不是什么革命性的功能,但正如蒂姆所说,它是一项急需的生活质量改进。

SLNX 正逐渐成为默认选项

现在 .slnx 文件甚至还带有一个图标,您可以双击它以在 Visual Studio 中打开它。 这些小小的改进让它感觉更像原生格式。

Tim 提到,虽然你仍然不能像打开 .csproj 文件那样打开 .slnx 文件,但工具支持正在不断发展。 他认为 SLNX 格式成为新的工作室解决方案文件格式只是时间问题。

解决方案文件会消失吗?

Tim 推测,从长远来看,解决方案文件可能会变得可有可无,甚至过时。 毕竟,他们做的也只是小组项目而已。 但就目前而言,SLNX 文件是通往未来的更清晰的垫脚石。

他也承认,对解决方案节点结构的任何更改都需要更新现有工具、库和向后兼容性。

Git、简洁性和可维护性

Tim 强调,这种新的解决方案格式非常适合基于 Git 的工作流程。 SLNX 文件不易损坏,更容易合并、比较和跟踪。 这符合现代 .NET 社区对更好的协作和工具的需求。

接下来是什么? 展望 .NET 10

Tim 认为 SLNX 格式将在 .NET 10 发布时"完全成熟"。 虽然它仍被标记为预览功能,但之前的大部分限制(例如缺少图标或双击支持)都已得到解决。

他的建议很明确:在新项目中开始使用 SLNX,并在适当的时候开始迁移现有解决方案。 在正式发布之前,请避免将其部署到大型企业系统中。

结论:为什么你应该采用 SLNX 格式

Tim Corey 制作的 SLNX 文件视频有力地证明了应该摒弃过时的 SLN 格式。 通过采用新的 SLNX 文件格式,开发人员可以获得以下好处:

  • 简化的语法

  • 更便捷的协作

  • 与现代工具具有更好的兼容性

  • 改进了 Git 冲突解决

无论您是使用 .NET CLI、Visual Studio 还是 VS Code 以及 C# 开发工具包,SLNX 格式都正逐渐成为一种可靠的替代方案。随着 .NET 10 可能全面支持 SLNX 格式,现在正是学习如何使用它的最佳时机。

因此,如果您厌倦了翻阅混乱的 Studio 解决方案文件格式、与合并冲突作斗争或处理损坏的构建配置,不妨尝试一下 SLNX 格式。

Hero Worlddot related to .NET 9 中的 SLNX 文件--为什么它们很重要
Hero Affiliate related to .NET 9 中的 SLNX 文件--为什么它们很重要

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我