每个开发者应该了解的5个.NET CLI命令
[[academy-video-youtube({"vid": "aSmmh-F5KCw", "start_time": "0", "title": "每位开发者都应该知道的5个必备.NET CLI命令", "creator": "Tim Corey", "length": "9m 30s"})]]
大多数C#开发者在整个工作流程中都在IDE内操作,通过点击按钮来编译、启动和测试他们的应用程序。 这种方式一直有效,直到失效。 自动化流水线、远程服务器和容器化环境没有图形界面,掌握一些终端命令能够让您在这些情况下保持高效,而无需使用鼠标。
在他的视频"每个开发者都应该知道的5个必备.NET CLI命令"中,Tim Corey讲解了五个.NET操作,这些操作包含了日常开发中最常用的命令:publish。 每一个都进行了实用演示,展示了不仅是语法,还包括何时和为什么使用它。 无论您是否习惯于使用终端,还是很少打开终端,这些命令都值得记住。
使用 .NET --info 检查您的环境
[0:31 - 1:25] 在运行任何项目命令之前,Tim首先验证开发环境。 dotnet --info更进一步:
dotnet --infodotnet --info这将打印出您计算机上安装的每个SDK和运行时版本,以及操作系统详细信息和活动架构。 Tim在.NET 10上演示了这一点,但该命令在任何版本上都可以相同地工作。 知道您安装了什么对调试版本不匹配或验证CI服务器是否镜像您的本地设置特别有帮助。
命令 1:.NET 构建
[2:16 - 3:44] 第一个命令编译您的项目而不启动它:
dotnet builddotnet build从项目目录中运行这段代码,读取bin文件夹下生成编译输出。 Tim指出编译是一个独立的步骤,与执行分开。 这种分离很重要,当您希望在提交到仓库或交给构建服务器之前验证您的代码能否干净地编译。
.NET SDK在构建过程中处理依赖关系解决,提取缺失的NuGet包并确保所有引用的程序集都存在。 如果此阶段失败,错误消息会直接指出问题所在,无论是缺少引用、语法错误还是目标框架不匹配。 在应用程序运行之前发现这些问题可以节省整个开发周期中的时间。
命令 2:.NET 运行
[3:44 - 5:42] 当run采取下一步并启动应用程序:
dotnet rundotnet run这会编译项目(如果需要的话),然后执行生成的输出。 对于控制台应用程序,这意味着在终端中运行它。 对于 web项目,内置的Kestrel服务器启动,应用程序在本地URL上可用。
Tim通过一个web应用程序演示了这一点,导航到正在运行的网站以确认一切正常加载。 run产生实时、互动的结果。 在积极开发期间,这是您用来测试更改及其效果最频繁的命令。
命令 3:.NET 观察
[5:42 - 7:06] 停止应用程序、进行更改并重启它很快就让人感到乏味。 watch命令消除了这个循环:
dotnet watchdotnet watch这将运行过程包裹在一个文件监视器中。 当您保存任何源文件的更改时,CLI会检测到修改并自动重新编译和刷新应用程序。 对于使用ASP.NET Core构建的Web应用程序,对Razor文件、CSS和C#代码的更改会在无需手动重启的情况下出现在浏览器中。
Tim展示了热重载的行为:编辑页面,保存,并立即看到更新反映。 这种紧密的反馈循环在UI工作中非常有价值,因为小的调整会不断发生。 不必循环通过停止-编辑-重建-启动,您可以专注于代码,其他事情交给工具处理。
命令 4:.NET 清除
[7:06 - 7:56] 在clean命令解决了这个问题:
dotnet cleandotnet clean运行它会删除输出目录的内容,因此您的后续构建从头开始。 Tim将此视为故障排除工具,而不是您在每次更改后运行的东西。 当您的项目表现出意外行为时,您怀疑是缓存的输出是罪魁祸首,build,确保您正在处理真正的新鲜编译。
这种习惯尤其在切换版本控制中的分支、将依赖项升级到新主版本时以及解决似乎偶尔出现的构建警告而没有明确原因时特别有用。
命令 5:.NET 发布
[7:56 - 9:01] 最后的命令架起了开发与部署之间的桥梁:
dotnet publishdotnet publish虽然publish创建了一个可用于部署的包。 编译后的程序集、配置文件、静态资产以及任何所需的运行时组件都落在一个可以直接复制到服务器的publish文件夹中。
publish之间的区别让一些开发者感到措手不及。 build输出包括调试符号和开发过程中有用但在生产中不必要(有时不受欢迎)的引用。 发布剥离掉这些额外的东西,并为其目标环境组织输出。 在部署到Docker或上传到云托管时,发布的输出就是应该放在您的最终镜像或发布包中的东西。
结束:五个命令,一个工作流程
[9:01 - 9:15] Tim最后列出了这五个命令:dotnet publish。 作为一个集合,它们涵盖了从编译到部署的核心开发循环。 每一个都有特定的用途,知道何时使用每一个都会给予您一种点击IDE按钮无法提供的控制水平。
结论
[9:15 - 9:30] 这五个CLI命令处理您在开发期间最常执行的任务:编译、运行、实时重载、清理过期的输出以及打包发布。 它们适用于每个.NET项目类型和SDK支持的每个操作系统。
下次当您打开终端时,无论是在您的本地机器、容器内还是在远程服务器上,您已经具备通过整个开发周期而无需图形界面的词汇。
示例小提示:您可以使用build链接成一行。 这一步确保从头编译,这在排查跨增量构建持续存在的问题时尤其方便。

