在本章中,第一个目标是设置您的开发环境,以使用 Visual Studio 2022、Visual Studio Code 或 JetBrains Rider。
在本书中,我将分别使用 Visual Studio、VS Code 和 Rider 来指代这三款代码编辑器。
其他目标是理解现代 .NET、.NET Core、.NET Framework、Mono、Xamarin 和 .NET Standard 之间的相似性和差异;使用各种代码编辑器创建尽可能简单的 C# 13 和 .NET 9 应用程序;然后发现寻找帮助的好地方。
我的写作风格确保您可以从我的书开始,然后切换到在线文档和其他在线资源,如视频、博客和论坛,这些是开发者喜欢学习的主要方式,如以下链接所示:https://survey.stackoverflow.co/2024/developer-profile#learning-to-code。
本章涵盖以下主题:
- 介绍本书及其内容
- 设置您的开发环境
- 理解 .NET
- 使用 Visual Studio 构建控制台应用程序
- 使用 VS Code 构建控制台应用程序
- 充分利用本书的 GitHub 仓库
- 寻求帮助
介绍本书及其内容
让我们开始介绍本书的代码解决方案、结构和内容。
获取本书的代码解决方案
本书的 GitHub 仓库包含了使用完整应用程序项目的所有代码任务和练习的解决方案,链接如下:
https://github.com/markjprice/cs13net9
在您的网页浏览器中导航到 GitHub 仓库后,按下键盘上的 . (点)键,或手动将链接中的 .com 更改为 .dev ,将仓库转换为基于 VS Code 的实时代码编辑器,称为 GitHub Codespaces,如图 1.1 所示:
警告!当您使用 GitHub Codespaces 访问一个代码库时,其 GitHub Repositories 扩展将尝试下载该代码库的索引。默认情况下,最大大小可以达到 50MB,但该代码库超过了此限制,因此您将看到以下警告消息: Repository exceeds download size limit! Continuing with partial text services. 您可以忽略此消息,因为您没有使用全部功能。
我们为您提供一个 PDF 文件,其中包含本书中使用的截图和图表的彩色图像。您可以从 https://packt.link/gbp/9781837635870 下载此文件。
在网页浏览器中使用 VS Code 非常适合与您选择的本地代码编辑器一起运行,以便在完成本书的编码任务时使用。您可以将自己的代码与解决方案代码进行比较,并在需要时轻松复制和粘贴部分内容。
您无需使用或了解 Git 即可获取本书的解决方案代码。您可以通过以下直接链接下载包含所有代码解决方案的 ZIP 文件,然后将 ZIP 文件解压到本地文件系统中: https://github.com/markjprice/cs13net9/archive/refs/heads/main.zip。
本书中使用的.NET 术语
在本书中,我使用现代 .NET 这个术语来指代 .NET 9 及其前身,如源自 .NET Core 的 .NET 6。我使用遗留 .NET 这个术语来指代 .NET Framework、Mono、Xamarin 和 .NET Standard。
现代 .NET 是对这些遗留平台和标准的统一。
本书的结构和风格
在第一章之后,本书将分为三个部分:语言、库和网页开发。
首先,我们将介绍 C#语言的语法和词汇;其次,我们将介绍用于构建应用程序功能的.NET 库中的可用类型;最后,我们将介绍使用 C#和.NET 构建的跨平台网站、服务和浏览器应用程序的基础知识。
大多数人通过模仿和重复而不是阅读理论的详细解释来最好地学习复杂主题;因此,我不会在本书中用每一步的详细解释来让你感到负担。我们的目的是让你编写一些代码并看到它运行。
您不需要立即了解所有细节。这将随着时间的推移而来,当您构建自己的应用程序并超越任何书籍所能教给您的内容时。
用 1755 年英语词典的作者塞缪尔·约翰逊的话来说,我犯下了“一些疯狂的错误和可笑的荒谬,这种多样性的作品没有一个是免于此的。”我对此承担全部责任,并希望您能理解我试图通过撰写这本关于快速发展的技术(如 C#和.NET)以及您可以用它们构建的应用程序的书籍来迎接挑战。
本书涵盖的主题
本书涵盖以下主题:
- 语言基础:C#语言的基本特征,从声明变量到编写函数和面向对象编程。
- 库基础:.NET 基类库的基本特性,以及一些用于常见任务(如数据库访问)的重要可选包。
- 现代网页开发基础:ASP.NET Core 框架用于服务器端和客户端网站及 Web 服务开发的现代特性。这包括 Blazor 和 Minimal APIs,排除了基于控制器的特性,如 MVC 和 Web API,以及遗留特性,如 Razor Pages。
本书《C# 13 和 .NET 9 – 现代跨平台开发基础》最好按顺序逐章阅读,因为它建立了基本技能和知识。
.NET 8 的应用和服务涵盖的主题
以下主题在伴随书籍《使用 .NET 8 的应用程序和服务》中提供:
- 数据:SQL Server 和 Azure Cosmos DB。
- 专业库:日期、时间、时区和国际化;用于图像处理、日志记录、映射和生成 PDF 的常见第三方库;多任务和并发;以及更多。
- 服务:缓存、排队、后台服务、gRPC、GraphQL、Azure Functions、SignalR 和最小 API。
- 用户界面:ASP.NET Core、Blazor 和 .NET MAUI。
这本书可以更像一本食谱来阅读,因此如果您特别对构建 gRPC 服务感兴趣,那么您可以直接阅读该章节,而无需阅读关于最小 API 服务的前面章节。
.NET 8 的工具和技能涵盖的主题
以下主题在伴随书籍《.NET 8 的工具和技能》中提供:
- 调试和内存分析。
- 所有重要的测试类型,从单元测试和集成测试到性能测试和网页用户界面测试。
- Docker 和 .NET 旨在实现本地分布式开发和测试。
- 设计模式和解决方案架构。
- 为获得您想要的.NET 开发者职业而准备面试。
我的.NET 8 书籍同样适用于.NET 9。您可以将项目目标设置为.NET 9,所有代码示例都将正常工作。由于向后兼容性,您不需要等待软件包升级以支持.NET 9。
设置您的开发环境
在开始编程之前,您需要一个用于 C#的代码编辑器,可以是来自微软或第三方的。
微软拥有一系列代码编辑器和集成开发环境(IDE),包括:
- Windows 版 Visual Studio
- 适用于 Windows、Mac 或 Linux 的 VS Code
- Web 版 VS Code 或 GitHub Codespaces
第三方创建了自己的 C#代码编辑器;例如,JetBrains 推出了跨平台的 Rider,该软件可在 Windows、Mac 或 Linux 上使用,并且从 2024 年 10 月起对非商业用途免费。Rider 在经验丰富的.NET 开发者中很受欢迎。
警告!尽管 JetBrains 是一家出色的公司,拥有优秀的产品,但 Rider 和 Visual Studio 的 ReSharper 扩展都是软件,而所有软件都有缺陷和奇怪的行为。例如,它们可能会在您的 Razor 页面、Razor 视图和 Blazor 组件中显示错误,如无法解析符号。然而,您仍然可以构建和运行这些文件,因为实际上并没有问题。如果您安装了 Unity 支持插件,它会抱怨装箱操作(这对 Unity 游戏开发者来说确实是个问题),但在非 Unity 项目中;因此,该警告不适用。
大多数读者使用 Visual Studio,这是一个功能强大且复杂的工具,可以完成许多任务。但 Visual Studio 喜欢提供自己的机制来尽可能多地完成工作,使用它的 .NET 开发人员可能会轻易认为 Visual Studio 是完成 .NET 相关任务的唯一方式,比如修改项目配置或编辑代码文件。
始终记住,Visual Studio 和其他所有代码编辑器只是为您完成手动操作的工具。它们只是向您展示了您正在处理的文件(如项目文件和所有 C# 代码文件)中实际发生的事情的一个视图。
您可以使用普通文本编辑器手动编辑项目和代码文件。最终,您使用 dotnet 命令行界面将项目文件编译——即构建——为可运行的程序集,打包为 .dll 或 .exe 文件,如图 1.2 所示:
选择适合学习的工具和应用类型
学习 C#和.NET 的最佳工具和应用类型是什么?
在学习时,最好的工具是能够帮助你编写代码和配置,但又不隐藏真实发生的事情。集成开发环境(IDE)提供了友好的图形用户界面,但它们在背后为你做了什么?一个更基础的代码编辑器,能够更接近实际操作,同时提供编写代码的帮助,在你学习时可能会更好。
有鉴于此,你可以认为最好的工具是你已经熟悉的工具,或者是你或你的团队将作为日常开发工具使用的工具。因此,我希望你可以自由选择任何 C# 代码编辑器或 IDE 来完成本书中的编码任务,包括 VS Code、Visual Studio,甚至 Rider。
在本书中,我在本章中提供了详细的逐步说明,介绍如何在 Visual Studio 和 VS Code 中创建多个项目。还提供了其他代码编辑器的在线说明链接,如下所示:https://github.com/markjprice/cs13net9/blob/main/docs/code-editors/README.md。
在后续章节中,我将仅提供项目名称和一般说明,因此您可以使用您喜欢的任何工具。
学习 C#语言结构和许多.NET 库的最佳应用类型是一个不被不必要的应用代码分散注意力的应用。例如,学习如何编写 switch 语句时,完全没有必要创建一个完整的 Windows 桌面应用程序或网站。
因此,我认为学习第 1 到 11 章中的 C#和.NET 主题的最佳方法是构建控制台应用程序。然后,在第 12 到 15 章中,关于 Web 开发,您将使用 ASP.NET Core 的现代部分构建网站和服务,包括 Blazor 和 Minimal APIs。
跨平台开发的 VS Code
选择的最现代和轻量级的代码编辑器是 VS Code,它是微软唯一的跨平台编辑器。它可以在所有常见操作系统上运行,包括 Windows、macOS 和多种 Linux 版本,包括红帽企业 Linux(RHEL)和 Ubuntu。
VS Code 是现代跨平台开发的一个不错选择,因为它拥有一个广泛且不断增长的扩展集,以支持许多超出 C# 的语言。对于 C# 和 .NET 开发者来说,最重要的扩展是于 2023 年 6 月发布预览版的 C# Dev Kit,因为它将 VS Code 从一个通用代码编辑器转变为一个针对 C# 和 .NET 开发者优化的工具。
更多信息:您可以在以下链接中阅读有关 C# 开发工具包扩展的官方公告:https://devblogs.microsoft.com/visualstudio/announcing-csharp-dev-kit-for-visual-studio-code/.
由于 VS Code 及其扩展是跨平台且轻量级的,可以在所有应用程序将要部署的平台上安装,以便快速修复错误等。选择 VS Code 意味着开发人员可以使用跨平台代码编辑器来开发跨平台应用程序。VS Code 支持 ARM 处理器,因此您可以在 Apple Silicon 计算机和树莓派计算机上进行开发。
VS Code 对网页开发有很强的支持,尽管它目前对移动和桌面开发的支持较弱。
VS Code 迄今为止是最受欢迎的代码编辑器或集成开发环境(IDE),在 Stack Overflow 的调查中,超过 73% 的专业开发者选择了它,您可以在以下链接阅读该调查:https://survey.stackoverflow.co/2024/。
GitHub Codespaces 用于云端开发
GitHub Codespaces 是一个完全配置的开发环境,基于 VS Code,可以在云托管的环境中快速启动,并通过任何网页浏览器访问。它支持 Git 仓库、扩展和内置命令行界面,因此您可以从任何设备编辑、运行和测试。
但请注意,要使您的 GitHub Codespaces 体验完全功能齐全且实用,它确实需要许可证费用。
更多信息:您可以通过以下链接了解有关 GitHub Codespaces 的更多信息:https://github.com/features/codespaces。
通用开发的 Visual Studio
Visual Studio 可以创建大多数类型的应用程序,包括控制台应用、网站、Web 服务和桌面应用。尽管您可以使用 Visual Studio 编写跨平台移动应用,但仍然需要 macOS 和 Xcode 来编译它。
Visual Studio 仅在 Windows 10 版本 1909 或更高版本的家庭版、专业版、教育版或企业版上运行;或在 Windows 11 版本 21H2 或更高版本的家庭版、专业版、专业教育版、工作站专业版、企业版或教育版上运行。Windows Server 2016 及更高版本也受支持。不支持 32 位操作系统和 Windows S 模式。
警告!Visual Studio for Mac 不正式支持 .NET 8 或更高版本,并且在 2024 年 8 月已达到生命周期结束。如果您一直在使用 Visual Studio for Mac,您应该切换到 Mac 上的 VS Code、Mac 上的 Rider,或者在本地计算机的虚拟机中或在云中使用 Windows 上的 Visual Studio,使用像 Microsoft Dev Box 这样的技术。退休公告可以在这里阅读:https://devblogs.microsoft.com/visualstudio/visual-studio-for-mac-retirement-announcement/。
我使用的
为了编写和测试本书的代码,我使用了以下硬件和软件:
- 在配备 Visual Studio、VS Code 和 Rider 的 Surface Laptop 7 Copilot+ PC 上运行 Windows 11。
- 在搭载 Apple Silicon M1 的 Mac mini 桌面上使用 macOS,配合 VS Code 和 Rider。
我希望你也能接触到各种硬件和软件,因为看到平台之间的差异可以加深你对开发挑战的理解,尽管上述任一组合都足以学习 C#和.NET 的基础知识,以及如何构建实用的应用程序和网站。
跨平台部署
您选择的代码编辑器和操作系统并不限制您的代码部署到哪里。
.NET 9 支持以下平台进行部署:
- Windows:Windows 10 版本 1607 或更高版本,Windows 11 版本 22000 或更高版本,Windows Server 2012 R2 SP1 或更高版本,以及 Nano Server 版本 2019 或 2022。
- Mac:macOS Catalina 版本 10.15 或更高版本,并在 Rosetta 2 x64 模拟器中运行。
- Linux:Alpine Linux 3.19 或 3.20,CentOS Stream 9,Debian 12,Fedora 40,openSUSE 15.5 或 15.6,RHEL 8 或 9,SUSE Enterprise Linux 15.5 或 15.6,以及 Ubuntu 20.04,22.04 或 24.04。
- Android:API 21 或更高版本是最低 SDK 目标。版本 12、12.1、13 和 14。
- iOS 和 iPadOS:15、16 或 17。iOS 12.2 被用作最低 SDK 目标。
- Mac Catalyst:12、13 或 14。
警告!.NET 对 Windows 7 和 8.1 的支持于 2023 年 1 月结束: https://github.com/dotnet/core/issues/7556。
.NET 5 及更高版本中的 Windows Arm64 支持意味着您可以在 Microsoft 的 Windows Dev Kit 2023(前称 Project Volterra)、Surface Pro 11 和 Surface Laptop 7 等 Windows Arm 设备上进行开发和部署。
您可以在以下链接查看最新支持的操作系统和版本:https://github.com/dotnet/core/blob/main/release-notes/9.0/supported-os.md。
所有受支持的 .NET 版本都可以通过 Windows 上的 Microsoft Update 自动修补。