.NET 项目的多方式启动指南 [特殊字符]

.NET 项目的多方式启动指南 🚀

这张图讲的是 ASP.NET Core 项目的几种常见启动方式,我帮你把每种方式的用法、区别和适用场景都梳理清楚:


一、脚本 / 命令行启动(最常用)

1. dotnet run(开发阶段首选)

  • 用法 :在项目根目录(包含 .csproj 文件的目录)直接执行:

    bash

    运行

    复制代码
    dotnet run
  • 特点

    • 自动编译项目并运行,无需手动执行 dotnet build
    • 会直接加载项目源码、配置文件,适合开发调试
    • 可以加参数,比如指定环境:dotnet run --environment Production

2. dotnet 项目.dll(生产部署首选)

  • 用法 :先执行 dotnet builddotnet publish 编译项目,然后进入输出目录执行:

    bash

    运行

    复制代码
    dotnet Advanced.NET6.Project.dll --urls "http://localhost:5000" --environment Production
  • 特点

    • 直接运行编译后的程序集(.dll),无需源码
    • 支持传入命令行参数(如端口、环境变量),生产环境部署常用
    • 可以配合守护进程(如 systemd)、Docker 容器运行

二、Visual Studio 2022 启动(开发调试)

1. 直接启动(F5 / Ctrl+F5)

  • F5(调试启动):启动项目并附加调试器,支持断点、变量查看,适合开发调试
  • Ctrl+F5(不调试启动):直接运行项目,不附加调试器,启动速度更快,适合快速验证功能

2. 多启动项目配置

如果你的解决方案包含多个项目,可以设置同时启动多个项目(比如 API + 前端):

  1. 右键解决方案 → 「设置启动项目」
  2. 选择「多个启动项目」,勾选需要启动的项目并设置启动顺序

三、其他常见启动方式(补充)

1. Docker 容器启动

dockerfile

复制代码
# Dockerfile 示例
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
COPY ./publish .
ENTRYPOINT ["dotnet", "Advanced.NET6.Project.dll"]

构建并运行:

bash

运行

复制代码
docker build -t my-net6-app .
docker run -d -p 5000:80 my-net6-app

2. IIS 部署启动

  1. 项目发布为 文件夹 模式
  2. 在 IIS 中新建网站,物理路径指向发布文件夹
  3. 安装 .NET 6 运行时和 ASP.NET Core 模块(AspNetCoreModuleV2

四、不同方式对比与选型建议

表格

启动方式 适用场景 优点 缺点
dotnet run 本地开发调试 一键编译 + 运行,配置简单 不适合生产,依赖源码
dotnet dll 生产部署、脚本启动 无需源码,支持参数,灵活 需要先编译 / 发布
Visual Studio 开发调试、断点排查 调试功能强大,可视化操作 不适合服务器部署
Docker/IIS 生产环境、容器化部署 隔离性好,可扩展,运维友好 配置稍复杂

五、命令行参数示例(扩展)

你可以通过 -- 传递参数,例如:

bash

运行

复制代码
# 指定监听端口和地址
dotnet Advanced.NET6.Project.dll --urls "http://0.0.0.0:8080;https://0.0.0.0:8443"

# 指定运行环境
dotnet Advanced.NET6.Project.dll --environment Staging

# 自定义配置参数
dotnet Advanced.NET6.Project.dll --AppSettings:ConnectionStrings:Default="Server=xxx;Database=xxx;Uid=xxx;Pwd=xxx;"
相关推荐
Z5998178412 小时前
c#软件开发学习笔记--WPF(MVVM框架)
笔记·学习·c#
软件黑马王子4 小时前
19.资源加载模块:主要作用和基本原理
开发语言·前端框架·c#
Am-Chestnuts5 小时前
通义千问任务清单怎么导出Word?用DS随心转保留层级和勾选项
开发语言·c#·word
fujisheng6616 小时前
拆解 FUI Source Generator:从 Bind 声明到强类型绑定与路由
c#
古少侠7 小时前
DeepSeek长回答怎么保存成Word?避免逐段复制和漏内容
c#·word
玖玥拾7 小时前
Lua 基础语法(五)Unity xLua基础配置与 C# 访问 Lua
开发语言·unity·c#·lua
我是唐青枫7 小时前
C#.NET StructureMap 从依赖注入到项目实战
开发语言·c#·.net
z落落7 小时前
C#简易聊天室(服务器+客户端)
运维·服务器·c#
dcrenl7 小时前
C# 程序发布时加入发布时间
c#·版本号·发布时间