《.NET Core CLI工具文档:dotnet-run》
在.NET Core开发生态中,命令行接口(CLI)是开发者与框架交互的核心工具。其中dotnet-run
作为项目构建与运行的快捷命令,凭借其高效性和灵活性,成为开发、调试和测试场景下的首选工具。本文将从基础用法到高级场景,全面解析dotnet-run
的功能、配置选项及最佳实践,帮助开发者充分利用这一工具提升开发效率。
一、dotnet-run的核心功能
dotnet-run
是.NET Core SDK提供的跨平台命令,用于直接编译并运行C#项目。其核心价值在于将传统的“编译-运行”两步操作合并为一步,显著简化开发流程。与直接调用dotnet build
后运行程序相比,dotnet-run
具有以下优势:
- 自动化构建:无需手动执行编译,自动检测项目变更并重新生成。
- 依赖管理:自动还原NuGet包,确保运行环境完整。
- 调试支持:可与调试器(如VS Code或Visual Studio)无缝集成。
- 跨平台兼容:在Windows、macOS和Linux上行为一致。
二、基础用法与参数详解
1. 基本命令格式
在项目根目录下执行以下命令即可运行程序:
dotnet run
该命令会隐式调用dotnet build
,若项目未构建则先执行编译,随后启动应用程序。
2. 常用参数
参数 | 说明 | 示例 |
---|---|---|
--project |
指定项目文件路径(支持.csproj或.sln) | dotnet run --project src/MyApp.csproj |
--configuration |
指定构建配置(Debug/Release) | dotnet run --configuration Release |
--framework |
多目标框架时指定运行框架 | dotnet run --framework net6.0 |
--launch-profile |
使用launchSettings.json中的配置 | dotnet run --launch-profile "IIS Express" |
-p|--project |
(简写)指定项目路径 | dotnet run -p tests/MyTests.csproj |
3. 传递参数给应用程序
若需将参数传递给运行的应用程序,需在dotnet run
后以双横线--
分隔CLI参数和应用程序参数:
dotnet run -- --input "test.txt" --verbose
在程序中可通过args
参数接收:
// Program.cs
var args = Environment.GetCommandLineArgs();
// 或使用主方法参数(.NET 6+ Top-level Statements)
var appArgs = args.Skip(1).ToArray(); // 跳过"dotnet"和"run"
三、高级场景与最佳实践
1. 多项目解决方案中的运行
在解决方案(.sln)包含多个项目时,需通过--project
明确指定启动项目:
dotnet run --project src/WebApi/WebApi.csproj
或修改解决方案文件,将目标项目设为启动项目(通过IDE或手动编辑.sln文件)。
2. 环境变量配置
可通过--environment
参数设置ASP.NET Core的运行环境(如Development/Production):
dotnet run --environment Development
或通过launchSettings.json
配置多环境启动参数:
{
"profiles": {
"MyApp": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
3. 调试集成
在VS Code中,可通过.vscode/launch.json
配置调试任务:
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net6.0/MyApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal"
}
]
}
或直接使用dotnet run
的调试模式:
dotnet run --no-build
(需配合调试器附加到进程)
4. 性能优化技巧
-
禁用重新编译:使用
--no-build
避免重复构建(适用于已构建项目):
dotnet run --no-build
-o|--output
控制生成位置:dotnet run --output ./bin/custom
dotnet run /p:ParallelBuild=true
四、常见问题与解决方案
1. 端口冲突错误
当运行Web应用时,若端口被占用会报错:
Unhandled exception. Microsoft.AspNetCore.Server.Kestrel: Unable to start Kestrel.
解决方案:
- 终止占用端口的进程:
# Windows
netstat -ano | findstr :5000
taskkill /PID /F
# macOS/Linux
lsof -i :5000
kill -9
// Program.cs
WebApplication.CreateBuilder(args)
.ConfigureKestrel(options => options.ListenAnyIP(8080));
2. 依赖还原失败
错误示例:
error NU1101: Unable to find package Newtonsoft.Json
解决方案:
- 手动还原NuGet包:
dotnet restore
NuGet.Config
文件)3. 多目标框架选择
当项目支持多个框架(如net6.0和net7.0)时,需显式指定:
dotnet run --framework net7.0
五、与开发工作流的集成
1. 自动化脚本示例
以下是一个完整的构建-运行-测试脚本(PowerShell):
param (
[string]$config = "Debug",
[string]$framework = "net7.0"
)
Write-Host "Restoring packages..." -ForegroundColor Cyan
dotnet restore
Write-Host "Building project ($config/$framework)..." -ForegroundColor Cyan
dotnet build --configuration $config --framework $framework --no-restore
if ($LASTEXITCODE -eq 0) {
Write-Host "Running application..." -ForegroundColor Green
dotnet run --configuration $config --framework $framework --no-build
} else {
Write-Host "Build failed!" -ForegroundColor Red
}
2. CI/CD中的使用
在GitHub Actions中可这样配置:
name: .NET CI
on: [push]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v2
with:
dotnet-version: '7.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Run
run: dotnet run --no-build
六、版本兼容性与迁移指南
不同.NET Core版本中dotnet-run
的行为差异:
版本 | 变更点 |
---|---|
.NET Core 2.1 | 引入--launch-profile 参数 |
.NET 5 | 默认使用集成终端输出 |
.NET 6+ | 支持Top-level Statements的参数传递 |
从.NET Framework迁移时需注意:
- 移除
project.json
,改用.csproj格式 - 全局工具需通过
dotnet tool install
安装
七、总结与展望
dotnet-run
作为.NET Core开发的核心工具,通过持续优化已支持从简单控制台应用到复杂微服务架构的快速迭代。未来版本可能进一步集成:
- AI辅助的错误诊断
- 更细粒度的资源监控
- 与云原生工具链的深度整合
开发者应熟练掌握其高级功能,结合CI/CD和本地调试工作流,构建高效、可靠的.NET应用开发体系。
关键词:.NET Core CLI、dotnet-run、命令行工具、项目构建、调试运行、跨平台开发、NuGet依赖、环境变量、多目标框架、CI/CD集成
简介:本文全面解析.NET Core CLI中的dotnet-run命令,涵盖基础用法、参数详解、高级场景(多项目运行、环境配置、调试集成)、性能优化技巧及常见问题解决方案,并提供自动化脚本和CI/CD配置示例,帮助开发者高效利用该工具提升开发效率。