36岁西安程序员|第二篇:换装重启,搭建.net 10后端服务
在上一篇《36岁西安程序员|断更6年重启,AI帮我拆2年计划,奋力冲3W+》中,我借助豆包梳理出月薪3W需具备的素质,也制定了详细的学习计划,今天就从更新开发环境、搭建.net 10后端服务开始落实计划。
从今天起正式启航!请大伙陪我重新出发,前路有阳光也有风雨,不过路虽远,行必达!
认路 —— 破解 .net framework 4.5 & .net core 3 与 .net 10 的差异
我一直以为自己停留在.net core 3的水平,直到今天才发现,其实还困在framework 4.5的老时代里。虽说“新时代的船没有老家伙的位置”,但我不想认输,就先让豆包帮我分析下我和最新版本到底差多少。
上图是AI梳理的思维导图,差异点不少,后续我会慢慢摸索其中的具体不同。
买马 —— 安装环境
程序员学习新技术,离不开完备的开发环境,就像古人出远门离不开马一样。我手头有一台win10笔记本,就先从Windows系统开始准备环境吧。
一、Visual Studio
六年前,Visual Studio(VS)就有“世界第一IDE”的说法,到现在依然是一款非常强大的IDE工具,新手优先选它,一站式配置无需额外装插件,上手最省心。
打开百度、必应等搜索引擎,搜索“visual studio”,从微软官网下载安装包,跟着提示一步步安装就好,记得勾选.net 10,详细步骤网上有很多教程,这里就不细说了。
另外提醒一句,它默认安装在C盘,要是C盘空间紧张,建议改装到其他磁盘,避免后续卡顿(后续工具安装同理,不再重复提醒)。
二、Visual Studio Code + .net sdk
技术熟练的朋友,也可以选Visual Studio Code + SDK的组合,轻便灵活,适合习惯自定义配置的开发者。搜索“visual studio code”,从微软官网下载就行,注意甄别那些不良公司的收费包装版,别被骗了。
SDK安装不复杂,搜索关键字“dotnet 10”,就能找到官网。
点击搜索结果第一个就能进入官网(https://dotnet.microsoft.com/zh-cn/download),这个页面里也能下载VS和VS Code,很方便。
SDK安装完成后,打开CMD输入以下命令,就能验证是否安装成功:
dotnet --list-sdks能出现如下输出,就说明安装正确了。
三、Rider + .net SDK
Rider和IDEA是同一家公司的产品,支持非商业用途免费授权,特别适合个人开发者。搜索的时候输入“JetBrains Rider”,能避免搜到很多无关内容。
出发 —— 从零开始搭建.net 10后端服务
环境都准备妥当了,接下来就正式动手,从零开始搭建.net 10后端服务,后续我会一步步给它添加功能和三方包,跟着一起提升自己。
一、新建一个ASP.NET Core 空项目
我打算先新建一个空项目,后续再慢慢完善功能。
我给项目取名“walking”,取walk的进行时,寓意着自己能持续前行、永不放弃。
按我的习惯,会把解决方案和项目放在不同目录,方便后续管理,其他选项就保持默认就好。
二、理解项目结构和代码
项目创建好后,用PowerShell打开文件目录,输入以下命令,就能查看项目里的所有文件:
Get-ChildItem -Recurse | Select-Object FullName输出如下,能清晰看到所有文件的路径:
FullName--------E:\WorkSpace\c7jiepro\walking\walkingE:\WorkSpace\c7jiepro\walking\walking.slnxE:\WorkSpace\c7jiepro\walking\walking\binE:\WorkSpace\c7jiepro\walking\walking\objE:\WorkSpace\c7jiepro\walking\walking\PropertiesE:\WorkSpace\c7jiepro\walking\walking\appsettings.Development.jsonE:\WorkSpace\c7jiepro\walking\walking\appsettings.jsonE:\WorkSpace\c7jiepro\walking\walking\Program.csE:\WorkSpace\c7jiepro\walking\walking\walking.csprojE:\WorkSpace\c7jiepro\walking\walking\bin\DebugE:\WorkSpace\c7jiepro\walking\walking\bin\Debug\net10.0E:\WorkSpace\c7jiepro\walking\walking\obj\DebugE:\WorkSpace\c7jiepro\walking\walking\obj\project.assets.jsonE:\WorkSpace\c7jiepro\walking\walking\obj\project.nuget.cacheE:\WorkSpace\c7jiepro\walking\walking\obj\walking.csproj.nuget.dgspec.jsonE:\WorkSpace\c7jiepro\walking\walking\obj\walking.csproj.nuget.g.propsE:\WorkSpace\c7jiepro\walking\walking\obj\walking.csproj.nuget.g.targetsE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0E:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\refE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\refintE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\staticwebassetsE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\.NETCoreApp,Version=v10.0.AssemblyAttributes.csE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\rpswa.dswa.cache.jsonE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\staticwebassets.removed.txtE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\walking.AssemblyInfo.csE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\walking.AssemblyInfoInputs.cacheE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\walking.assets.cacheE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\walking.GeneratedMSBuildEditorConfig.editorconfigE:\WorkSpace\c7jiepro\walking\walking\obj\Debug\net10.0\walking.GlobalUsings.g.csE:\WorkSpace\c7jiepro\walking\walking\Properties\launchSettings.json不过在Visual Studio界面里,显示的内容会简洁很多,只有图中这些核心文件。
这里跟大家说个知识点,C# 9.0语法中引入了顶级语句,对应.NET 6.0及以上版本,我们用的.NET 10也包含在内。
如果不使用顶级语句,程序就必须包含一个静态的Main方法作为启动入口:
namespace walking45{ public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run(); } }}而使用顶级语句后,代码会精简很多:
var builder = WebApplication.CreateBuilder(args);var app = builder.Build();app.MapGet("/", () => "Hello World!");app.Run();注意:使用顶级语句后,整个项目里只能有一个文件用这种语法,否则会报错,程序无法正常运行;若不小心多个文件使用,删除多余的即可解决。
弄明白顶级语句的用法后,我们逐行解析这四行核心代码的功能,这也是后续开发的基础(不纠结底层原理,后续配置服务再逐步理解)。
var builder = WebApplication.CreateBuilder(args);var builder = WebApplication.CreateBuilder 是 ASP.NET Core Web 项目(.NET 6+,含.NET 10)的核心启动入口基础,作用是创建并初始化 Web 应用程序的 “构建器”,为后续配置和启动 Web 服务打基础。
用我自己的话来说,这行代码就是创建一个“脚手架”,后续要加的开发工具、配置,都能挂载在上面,而且C#会自动读取配置、环境变量和命令行参数,不用我们手动操作。
var app = builder.Build()var app = builder.Build() 是 ASP.NET Core Web项目(.NET 6+/.NET 10)启动流程的核心第二步,承接上一行var builder = WebApplication.CreateBuilder(args);,作用是将之前通过 builder 配置的所有内容(如环境、服务、配置等)“打包”,生成可运行的Web应用实例(app)。
简单讲,就是“脚手架”的配件都装好了,接下来就能构建出一个可运行的Web实例对象,就像盖房子,备齐材料后就能搭建主体一样。
app.MapGet("/", () => "Hello World!");app.MapGet("/", () => "Hello World!"); 是 ASP.NET Core Web项目的接口路由配置核心,承接上一行生成的Web应用实例(app),作用是“定义一个简单的GET请求接口”,让启动后的Web服务能接收请求、返回响应,是后端服务和前端/客户端交互的“第一个入口”。
通俗点说,目前这个服务只能通过HTTP GET方式访问localhost:xxx/,访问后会返回“Hello World!”,相当于给服务开了第一个访问入口。
app.Run() 就很简单了,作用就是启动整个项目,让Web服务跑起来。
代码都理解得差不多了,运行程序看看效果:
VS界面上,实心三角是启动调试,空心三角是启动不调试。两者的区别很简单:启动调试可以设断点,随时中断程序查看实时状态、排查bug;启动不调试就是单纯运行程序,不能中途中断,只能自己观察运行状态。
点击启动后,VS会自动打开浏览器,访问程序的默认端口,默认显示如下:
能看到熟悉的Hello World,说明项目启动成功,这第一步算是顺利完成了。
三、修改端口
项目能正常启动后,要是默认端口不方便,我总结了4种修改方法,大家按需选择就好:

- 在app.Run方法中直接指定URL,比如http://*:8080:
//app.Run();app.Run("http://*:8080");- 添加如下代码,记得要放在app.Run()之前,否则不生效:
app.Urls.Add("http://*:8080"); // 需放在app.Run()之前生效- 在appsettings.json文件中添加配置,这种方法更灵活,适合长期使用:
"Kestrel": { "Endpoints": { "Http": {"Url": "http://*:8080"} } }appsettings文件有配套的appsettings.{Env}.json,我们可以创建多个配置文件,分别对应不同环境。比如常用的appsettings.Development.json,就是专门用于开发环境的配置,后续开发、测试、上线切换起来会很方便。
- 修改Properties目录下的launchSettings.json文件,找到applicationUrl配置项,修改里面的端口即可:
{ "$schema": "https://json.schemastore.org/launchsettings.json", "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5026", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }}把applicationUrl里的端口改成自己需要的,保存后重启项目,端口就修改成功了。
歇脚 —— 总结
今天顺利完成了.net新老版本差异梳理、开发环境更新,也成功搭建了.net 10后端空项目,对停留在老版本的我来说,这也是不小的进步。后续我会以这个项目为基础,一步步学习新技术,也希望能给有类似经历的同行,提供一点参考。
一个小技巧
在VS界面里,按F5能快速进入调试模式;按F11(逐语句调试)也能启动调试,不过会直接在第一行代码处进入断点,适合逐行排查问题。
💻 配套实训环境与动手练习
本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验: