dotnet cli 是 c# 项目构建、调试、发布的核心执行引擎,非可选工具;不掌握它,连 dotnet run 都可能因项目定位错误或参数传递失败而报错。

直接说结论:dotnet CLI 不是“可选工具”,而是 C# 项目构建、调试、发布的核心执行引擎;不掌握它,连一个 dotnet run 都可能跑错项目或传错参数。
dotnet new 怎么选对模板和框架版本
模板选错,后续所有操作都容易报错——比如用 dotnet new webapi 在 .NET 8 环境下会创建过时结构,而 dotnet new web 才是推荐的现代 Web API 模板。
- 先查本地可用模板:
dotnet new --list,注意区分web、webapi、minimalapi的适用场景 - 强制指定框架版本,避免 CI 环境因 SDK 升级意外失败:
dotnet new console -f net8.0 - 绝对不要在中文路径下执行
dotnet new,某些模板(如 Blazor WebAssembly)生成的.csproj文件可能含非法 XML 字符,触发MSB4025: The project file could not be loaded
dotnet run 为什么总找不到项目或传不了参数
dotnet run 默认只认当前目录下的 .csproj,不会自动推导解决方案里的启动项目。漏掉分隔符 --,命令行参数会被 CLI 吞掉,而不是传给你的程序。
ApiPost是一个支持团队协作,支持模拟POST、GET、PUT等常见请求,并可直接生成文档的API调试、管理工具,ApiPost是后台接口开发者或前端、接口测试人员的工作必备工具。快速生成、一键导出API文档。感兴趣的朋友快来下载吧。软件说明ApiPost官方版是一款十分出色的接口调试与文档生成工具,ApiPost官方版界面美观大方,功能强劲实用,支持团队协作,支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员的工作必备工具。软件特色更方便支持接口调试的同时快速生成、一键
- 在解决方案根目录执行
dotnet run→ 报错Couldn't find a project to run - 正确指定项目:
dotnet run --project src/MyApp/MyApp.csproj(别用-p缩写,旧 SDK 可能不兼容) - 传参给应用本身必须加
--分隔:dotnet run --project app.csproj -- --verbose --port 5001,否则--verbose被当成dotnet run的选项处理
dotnet restore 是不是可以省略
它经常被隐式调用,但不能依赖它——尤其在 CI/CD 或多项目引用场景下,跳过会导致依赖不一致或 NU1102 包找不到错误。
-
dotnet build、dotnet run、dotnet test会隐式还原,但仅当.csproj自上次还原后有变更 - CI 流水线中必须显式执行:
dotnet restore solution.sln,比逐个dotnet restore *.csproj更快且能统一解析ProjectReference - Docker 构建中慎用
--interactive,无 TTY 时会卡住,导致构建挂起
dotnet sln add 怎么避免项目路径解析失败
dotnet sln add 对路径敏感,相对路径写错、未提前创建 .sln 文件、或路径含空格未引号包裹,都会失败。
- 先确保已有解决方案文件:
dotnet new sln或dotnet new sln --name MySolution - 添加项目时用相对路径,并引号包裹含空格路径:
dotnet sln add "src/My App/MyApp.csproj" - 想把项目加到解决方案文件夹(solution folder)里,得加
--solution-folder参数:dotnet sln add src/Api/Api.csproj --solution-folder "Backend"
最常被忽略的一点:dotnet run 和 dotnet publish 行为差异极大——前者默认走 debug 配置、不生成独立部署包;后者若不加 --self-contained true 和 --runtime win-x64,输出的只是框架依赖型程序,换环境就跑不起来。










