讲师中心 微信公众号
AI工具推荐 视频效率加速

C# .NET CLI使用方法 C#如何使用dotnet命令创建和管理项目

大宇小哥_9461

大宇小哥_9461

发布时间:2026-01-31 04:45:20

|

520人浏览过

|

来源于php中文网

原创

选对 dotnet new 模板是新建项目关键,需用 dotnet new --list 查看、-f 指定框架版本、避免中文路径;dotnet restore 应在 CI 中显式调用;dotnet run 需用 --project 指定目标;publish 须按需设 --self-contained 和 --runtime。

c# .net cli使用方法 c#如何使用dotnet命令创建和管理项目

dotnet new 创建项目时如何选对模板

新建项目第一步不是写代码,而是选对 dotnet new 模板。模板不对,后续引用、SDK 版本、启动方式全可能出问题。

  • dotnet new --list 查看本地已安装模板(注意:.NET SDK 更新后需手动运行 dotnet new --install 补充新模板)
  • 常用模板名必须带引号或转义:Web 项目用 dotnet new web(.NET 6+),不要用过时的 webapi 或 mvc 模板除非明确需要对应结构
  • 指定框架版本要加 -f 参数:dotnet new console -f net8.0,否则默认用 SDK 最高稳定版,CI 环境容易因 SDK 升级意外失败
  • 避免在中文路径下执行 dotnet new,某些模板(如 Blazor WebAssembly)生成的 .csproj 文件可能含非法 XML 字符,导致 dotnet build 报错 MSB4025: The project file could not be loaded

dotnet restore 和隐式还原的区别

dotnet restore 不是总需要手动运行——但你得知道它什么时候被跳过、什么时候必须显式调用。

  • dotnet build、dotnet run、dotnet test 默认会触发隐式还原,但仅当项目文件(.csproj)自上次还原后有变更(比如新增了 <packagereference></packagereference>)
  • CI/CD 流水线中建议始终显式执行 dotnet restore,否则缓存机制可能导致依赖未更新,尤其使用 Directory.Build.props 全局控制包版本时
  • 若遇到 NU1102: Unable to find package xxx,先确认 NuGet.Config 是否配置了私有源;再检查是否误用了 --interactive 参数(该参数在无 TTY 的 Docker 构建中会卡住)
  • 多项目解决方案中,dotnet restore solution.sln 比逐个还原更快,且能统一解析项目间项目引用(ProjectReference)

dotnet run 总是编译整个解决方案?怎么只跑一个项目

dotnet run 默认行为取决于当前目录和项目文件存在位置,不加参数很容易跑错目标。

cn-json-diff
cn-json-diff

比较两个 JSON 文件并显示差异。支持嵌套结构、数组及值变更。纯 Python 标准库实现,无需 API 密钥。

下载
  • 在解决方案根目录执行 dotnet run 会报错 Couldn't find a project to run —— 它只认当前目录下的 .csproj,不自动推导启动项目
  • 指定项目必须用 --project(不能简写为 -p 在某些旧 SDK 中不可靠):dotnet run --project src/MyApp/MyApp.csproj
  • 传递命令行参数给应用本身时,双短横后的内容才属于应用:dotnet run --project app.csproj -- --verbose --port 5001,中间的 -- 是分隔符,漏掉会导致参数被 CLI 解析而非传入 Main
  • 若项目含 <iswebproject>true</iswebproject>(如 web 模板),dotnet run 自动启用热重载(Hot Reload);但类库项目或 console 模板默认不启用,需加 --hot-reload 参数(.NET 6+)

dotnet publish 输出目录混乱?如何控制产物结构

dotnet publish 的输出不是简单复制文件,它的目录结构、依赖打包方式直接受参数控制,稍不注意就部署失败。

  • --self-contained false(默认)生成“框架依赖型”发布包,运行前需目标机器装对应 .NET 运行时;--self-contained true 才打包容器化部署常用的独立包,但体积大、跨平台需额外指定 --runtime(如 linux-x64)
  • -o 指定输出路径时,路径不能是相对路径中的上级目录(如 -o ../publish),部分 SDK 版本会静默失败或覆盖错误目录
  • 发布 Web 项目时,默认启用 Trimming(.NET 6+),可能移除反射使用的类型,导致 System.TypeLoadException;若用到 Assembly.GetTypes() 或 JSON 序列化动态类型,应加 --no-trim
  • 想排除 XML 文档文件减少体积?加 /p:ExcludeXmlDocs=true;但别用 /p:DocumentationFile= 手动指定,它和 dotnet publish 的内部文档生成逻辑冲突

.NET CLI 的复杂性不在命令数量,而在每个命令背后隐含的 SDK 版本策略、项目系统解析逻辑和跨平台运行时绑定规则。最容易被忽略的是:同一句 dotnet build 在本地 Windows 和 CI 中的 Linux runner 上,可能因 global.json 缺失或 MSBuildSDKsPath 环境变量不同,加载完全不同的 SDK 目录。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2255

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3622

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1216

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

4159

2025.09.10

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4924

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

6377

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2562

2024.11.28

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

916

2023.08.08

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn