第一部分:专辑说明

这个博客文章的发布原因是自己在复习C#的知识点,这个课程的知识点是完全对应b站唐老狮的课程目录,但是不会按照唐老师的内容去讲解,会添加自己的理解。

特殊说明:实例使用的vs2022版本。

第二部分:正文

首先说明,新建的工程是勾选了将解决方案和项目放在同一目录中的,但是不是否勾选都不会影响这个文件名称,只是把sln后缀名的文件放置在了外面。具体可以看我的上一篇文章,上一篇文章我详细说明了新建工程时的所有问题。

C#入门篇—新建工程,巨详细,带其他的选项的作用https://blog.csdn.net/ldjt0729/article/details/161962391?spm=1001.2014.3001.5502

.VS文件夹 -  IDE 的“记忆”

存放 Visual Studio 的本地用户设置和缓存数据,如打开的文件历史、断点位置、调试配置等。该文件夹是隐藏文件夹(以“.”开头,如果你的电脑上没有显示这个文件夹,你可以在资源管理器的查看中勾选显示隐藏文件夹),通常不需要手动修改或删除,删除后 VS 会重新生成,但会丢失个性化设置。

bin 文件夹 - “成品仓库”

这是“二进制”(Binary)的缩写,存放的是项目编译后最终生成的可执行文件或库文件,比如 .exe、.dll,以及相关的配置文件。当你运行程序或发布项目时,系统实际调用的就是 bin 目录下的内容。它通常包含 Debug 和 Release 两个子文件夹,分别对应调试模式和发布模式的构建结果。这个文件夹的内容可以安全删除,重新编译后会自动重建。

在一个新建的项目中只会有Debug子文件夹,并且文件夹中没有任何文件。

obj 文件夹 - “加工车间”

这是“对象”(Object)的缩写,存放的是编译过程中产生的临时中间文件,比如 .obj、.pdb、资源文件的预编译版本等。这些文件用于加速增量编译——当你只修改了部分代码时,编译器只需重新编译变动的部分,而不是整个项目,从而节省时间。obj 文件夹的内容也可以安全删除,下次编译时会重新生成。

**.csproj 文件 - “项目说明书”

.csproj 文件是 C# 项目的核心配置文件,它本质上是一个 XML 格式的文档,用于告诉 Visual Studio 和构建系统(MSBuild)如何编译、打包和运行你的项目。

这个文件定义了项目的“身份”和“规则”,包括:

  • 目标框架:比如 .NET 6、.NET 8 或 .NET Framework 4.8。
  • 包含的源文件:哪些 .cs 文件属于这个项目。
  • 引用的程序集或 NuGet 包:项目依赖哪些外部库。
  • 编译选项:如语言版本、输出类型(控制台应用、类库、Web 应用等)、调试/发布配置。
  • 构建事件:在编译前或编译后要执行的脚本或命令。
  • SDK 引用:现代 .NET 项目通常引用 Microsoft.NET.Sdk 或其变体(如 Web、Razor),这些 SDK 提供了默认的构建逻辑。

这个是我新建的工程中的.csproj文件,我已经为每一行语句添加了注释说明,但是这个不是我们学习C#的重点,后续如果有时间我会再写一篇文章说明:

<!-- 声明使用 Microsoft.NET.Sdk SDK,这是构建项目的核心工具集 -->
<Project Sdk="Microsoft.NET.Sdk">

  <!-- PropertyGroup: 属性组,用于定义项目的各种配置参数 -->
  <PropertyGroup>

    <!-- OutputType: 输出类型。Exe 表示编译后生成一个可执行文件(.exe),即控制台应用程序 -->
    <OutputType>Exe</OutputType>

    <!-- TargetFramework: 目标框架。net8.0 表示你的程序基于 .NET 8.0 版本运行 -->
    <TargetFramework>net8.0</TargetFramework>

    <!-- RootNamespace: 根命名空间。通常与项目名称一致,生成的类默认会放在这个命名空间下 -->
    <RootNamespace>C_入门</RootNamespace>

    <!-- ImplicitUsings: 隐式引用。enable 表示自动引入常用的命名空间(如 System, System.IO 等),省去手动写 using 的麻烦 -->
    <ImplicitUsings>enable</ImplicitUsings>

    <!-- Nullable: 可空引用类型检查。enable 表示开启严格的空值检查,帮助你在编译时发现潜在的 NullReferenceException 错误 -->
    <Nullable>enable</Nullable>

  </PropertyGroup>

</Project>

**.sln 文件 - “项目总管家”

这是整个项目的“总管家”或“目录索引”。它本身不包含任何代码逻辑,而是记录了当前解决方案中包含了哪些项目(.csproj)、这些项目在磁盘上的路径、以及启动项目等全局配置信息。当你双击 .sln 文件时,Visual Studio 会根据它的内容加载所有关联的项目,还原你上次关闭时的开发环境。即使你的解决方案里只有一个项目,VS 也会默认生成一个 .sln 文件来统一管理。

**.cs 文件 - “你的表演舞台”

这是你真正编写程序逻辑的地方,是程序的“血肉”。每一个 .cs 文件都包含用 C# 语言编写的类、方法、变量等代码。例如,截图中的Program.cs就是程序的入口点,里面通常包含 Main 方法,是程序运行时首先执行的代码。你可以创建多个 .cs 文件来组织不同功能的代码模块。

第三部分:.cs打开和.sln的区别

截图展示

首先说明下面的两个截图我是没有进行任何的项目设置更改的

这是.sln打开:

这是使用.cs打开:

我们可以看到双击两个不同的文件打开之后显示的界面也是不同的。

.sln打开

使用.sln打开会有一个解决方案资源管理器,再结合正文部分的 .sln 文件记录了当前解决方案中包含了哪些项目(.csproj)、这些项目在磁盘上的路径、以及启动项目等全局配置信息。我们就可以知道使用.sln打开允许你直接跳转到其他的cs文件中。

你使用这个打开就是直接打开了这个整个项目。因此,你会看到完整的“解决方案资源管理器”,并且可以使用代码跳转、智能提示、编译运行等所有高级功能。

.cs打开

使用.cs打开这个解决方案资源管理器的界面就不见了,这是因为.cs只是 C# 的源代码文件,它本质上是一段纯文本,如果你直接双击.cs文件,Visual Studio 会把它当作一个普通的文本编辑器来用。此时它不知道这段代码属于哪个项目,也不知道项目的配置和依赖,所以只能把它归类为“杂项文件” (Miscellaneous Files)

在这种状态下,你虽然能修改代码并保存,但会失去很多便利:

  • 无法直接点击绿色启动按钮编译运行整个程序。
  • 跨文件的代码跳转(如按 F12 跳转到其他类的定义)可能会失效。
  • 智能提示(IntelliSense)可能会变弱或报错。

第四部分:结语

下一篇我们会讲解VS的窗口介绍。如果这篇文章有错误可以在下方评论,我会积极改正哦!

更多推荐