最近在看砖头书 《C# 10 和 .NET 6 入门与跨平台开发,第六版》(.NET 8 那本太贵买不起),真是堪称废话大全,全是没用的八股和 IDE 截图,我甚至怀疑作者和译者都没有实际开发经验。有点看不下去,所以干脆直接动手吧,边重写这个博客,边学习吧。
首先需要安装 .NET8, 参考 Windows PowerShell 中通过 winget 命令行下载安装 .Net 8。
.NET 版本
> dotnet.exe --version
8.0.301
新建项目
WSL 下直接执行,或者 PowerShell 中也可以
> dotnet.exe new mvc -n BlogNet8
-n 是 –name 的缩写,即指定了项目名,也自动创建了项目目录。
如果想使用自带的用户管理功能,可以加上 auth 参数:
> dotnet.exe new mvc -n BlogNet8 --auth=Individual
这样,生成的项目相对不加 auth 参数的,会在默认首页右上角多了个注册和登录的功能,而且使用了 sqlite 数据库。
目录结构
.Net 8 MVC 默认生成的目录结构跟其他语言的 MVC 框架没有什么大的分别,比较好理解。
会看到内置了 bootstrap,跟 laravel 类似,其实挺方便。
> tree
.
├── BlogNet8.csproj
├── Controllers
│ └── HomeController.cs
├── Models
│ └── ErrorViewModel.cs
├── Program.cs
├── Properties
│ └── launchSettings.json
├── Views
│ ├── Home
│ │ ├── Index.cshtml
│ │ └── Privacy.cshtml
│ ├── Shared
│ │ ├── Error.cshtml
│ │ ├── _Layout.cshtml
│ │ ├── _Layout.cshtml.css
│ │ └── _ValidationScriptsPartial.cshtml
│ ├── _ViewImports.cshtml
│ └── _ViewStart.cshtml
├── appsettings.Development.json
├── appsettings.json
├── obj
│ ├── BlogNet8.csproj.nuget.dgspec.json
│ ├── BlogNet8.csproj.nuget.g.props
│ ├── BlogNet8.csproj.nuget.g.targets
│ ├── project.assets.json
│ └── project.nuget.cache
└── wwwroot
├── css
│ └── site.css
├── favicon.ico
├── js
│ └── site.js
└── lib
├── bootstrap
│ ├── LICENSE
│ └── dist
│ ├── css
│ │ ├── bootstrap-grid.css
│ │ ├── bootstrap.css
│ │ ├── bootstrap.css.map
│ │ ├── bootstrap.min.css
│ │ ├── bootstrap.min.css.map
│ │ ├── bootstrap.rtl.css
│ │ ├── bootstrap.rtl.css.map
│ │ ├── bootstrap.rtl.min.css
│ │ └── bootstrap.rtl.min.css.map
│ └── js
│ ├── bootstrap.bundle.js
│ ├── bootstrap.js
│ ├── bootstrap.js.map
│ ├── bootstrap.min.js
│ └── bootstrap.min.js.map
├── jquery
│ ├── LICENSE.txt
│ └── dist
│ ├── jquery.js
│ ├── jquery.min.js
│ └── jquery.min.map
├── jquery-validation
│ ├── LICENSE.md
│ └── dist
│ ├── additional-methods.js
│ ├── additional-methods.min.js
│ ├── jquery.validate.js
│ └── jquery.validate.min.js
└── jquery-validation-unobtrusive
├── LICENSE.txt
├── jquery.validate.unobtrusive.js
└── jquery.validate.unobtrusive.min.js
20 directories, 80 files
运行
> dotnet.exe run
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5180
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: D:\work\BlogNet8
然后直接在浏览器里访问:
http://localhost:5180
即可。
注意,这里的端口号是随机分配的,并不是固定的。
修改端口
如果要改成自己习惯的端口,可以修改文件:
Properties/launchSettings.json
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5180",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7286;http://localhost:5180",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
将上面的 5180 改成 5000 即可。然后再次运行
> dotnet.exe run
访问 http://localhost:5000 就能看到效果。
命令帮助
new mvc 时,支持的参数还挺多的,可以通过下面命令查看具体的参数。例如,是否默认支持用户认证之类,选择 .NET 版本之类。
> dotnet.exe new mvc --help
ASP.NET Core Web App (Model-View-Controller) (C#)
Author: Microsoft
Description: A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services.
...