DotNet 命令行开发
DotNet 命令行开发
- 下载安装
- 下载 SDK
- 安装 SDK
- 绿色版
- 下载
- 绿化脚本
- 常用命令
- 创建 dotnet new
- 运行 dotnet run
- 发布应用 dotnet publish
- 更多命令
- VSCode 调试
- 所需插件
- 调试 CS
- 配置
- 项目.csproj
- 排除依赖关系
- launch.json
- tasks.json
- 参考资料
下载安装
下载 SDK
我们就下最新的好: .NET 8.0 SDK (v8.0.100) - Windows x64 Installer!
安装 SDK
直接运行,一路下一步即可。

绿色版
下载
https://download.csdn.net/download/jx520/88673976
将压缩包解压到目标路径,如: C:\dotnet
绿化脚本
将当前目录添加到系统环境变量 PATH。
以是 VBS 脚本,用于为 dotnet sdk 添加环境变量。
Set WshShell = WScript.CreateObject("WScript.Shell") ' 创建一个 WshShell 对象
currentDir = WshShell.CurrentDirectory ' 获取当前目录' 以管理员权限运行自己(并把当前目录作为参数传过去)
If WScript.Arguments.Length = 0 Then Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ """ & currentDir & """ RunAsAdministrator", , "runas", 1 WScript.Quit
End if ' 检查是否传递了当前目录作为参数
If WScript.Arguments.Count > 0 ThencurrentDir = WScript.Arguments(0)'MsgBox currentDir, vbOKOnly, "-当前目录-"
End If' 读取当前的 PATH 环境变量
pathEnv = WshShell.Environment("SYSTEM").Item("Path")
MsgBox pathEnv, vbOKOnly, "当前环境变量 Path"' 将当前目录追加到 PATH
updatedPath = pathEnv & ";" & currentDir' 添加 DOTNET_ROOT 环境变量
WshShell.Environment("SYSTEM").Item("DOTNET_ROOT") = currentDir' 更新 PATH 环境变量
WshShell.Environment("SYSTEM").Item("Path") = updatedPath' 通知用户
MsgBox "已将当前目录添加到 PATH 环境变量中。", vbOKOnly, "环境变量更新"' 暂停脚本执行
WScript.Sleep 3000
执行完脚本后新开一个 cmd 执行 dotnet --version 输出版本号则成功。
Microsoft Windows [版本 10.0.22000.1936]
(c) Microsoft Corporation。保留所有权利。C:\>dotnet --version
8.0.100
注意:如果某些IDE环境无法识别新加的环境变量,则重启一下系统。
常用命令
先进入项目根目录
| 命令 | 说明 | 演示 |
|---|---|---|
| dotnet new | .NET CLI 的模板实例化命令。 比如:创建解决方案、项目、装卸模板包 | dotnet new <项目模板> -o <项目目录> -n <项目名称> |
| dotnet run | 调试运行 | |
| dotnet publish | 发布应用 | dotnet publish -c Release -r <目标平台> --self-contained true |
创建 dotnet new
- 在
C:/mysln位置,创建一个解决方案
dotnet new sln -o C:/mysln
# 或:进入指定目录 `C:/mysln` 后再创建解决方案文件 `mysln.sln`
cd "C:/mysln"
dotnet new sln -n "mysln"
- 在
C:/mysln/demo位置,创建一个C#的命令行项目,然后添加到解决方案
dotnet new "console" -lang "C#" -n <项目名称> -o <项目路径>
# 创建项目
cd "C:/mysln"
dotnet new "console" -lang "C#" -o "demo_path" -n "demo_name"
# 添加到解决方案
dotnet sln "./mysln.sln" add "./demo_path/demo_name.csproj"
- 在
C:/mysln/windemo位置,创建一个桌面应用项目,然后添加到解决方案
# 创建项目
cd "C:/mysln"
dotnet new "winforms" -lang "C#" -n "windemo" -o "windemo"
# 添加到解决方案
dotnet sln "./mysln.sln" add "./windemo/windemo.csproj"
运行 dotnet run
进入项目根目录,执行 dotnet run 即可运行
C:\>cd "C:/mysln/demo"
C:\mysln\demo>dotnet run
Hello, World!
发布应用 dotnet publish
发布当前项目(不带依赖,需要目标系统安装有相应的 .net 才能执行)
dotnet publish -c Release -r win-x64
发布当前项目(包含依赖,可以直接执行,但无用的依赖没排除,文件有点大)
dotnet publish -c Release -r win-x64 --self-contained true
发布当前项目为单 exe(可以直接执行,排除了一部分无用依赖,还是比较大)
dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true -p:TrimMode=link /p:IncludeNativeLibrariesForSelfExtract=true
要进一步优化排除无用依赖需要添加配置,详见:排除依赖关系
更多命令
可以在线看 dotnet 命令,也可以命令行 dotnet --help 查看
C:\>dotnet -h
使用情况: dotnet [runtime-options] [path-to-application] [arguments]执行 .NET 应用程序。runtime-options:--additionalprobingpath <path> 要探测的包含探测策略和程序集的路径。--additional-deps <path> 指向其他 deps.json 文件的路径。--depsfile 指向 <application>.deps.json 文件的路径。--fx-version <version> 要用于运行应用程序的安装版共享框架的版本。--roll-forward <setting> 前滚至框架版本(LatestPatch, Minor, LatestMinor, Major, LatestMajor, Disable)。--runtimeconfig 指向 <application>.runtimeconfig.json 文件的路径。path-to-application:要执行的应用程序 .dll 文件的路径。使用情况: dotnet [sdk-options] [command] [command-options] [arguments]执行 .NET SDK 命令。sdk-options:-d|--diagnostics 启用诊断输出。-h|--help 显示命令行帮助。--info 显示 .NET 信息。--list-runtimes 显示安装的运行时。--list-sdks 显示安装的 SDK。--version 显示使用中的 .NET SDK 版本。SDK 命令:add 将包或引用添加到 .NET 项目。build 生成 .NET 项目。build-server 与由生成版本启动的服务器进行交互。clean 清理 .NET 项目的生成输出。format 将样式首选项应用到项目或解决方案。help 显示命令行帮助。list 列出 .NET 项目的项目引用。msbuild 运行 Microsoft 生成引擎(MSBuild)命令。new 创建新的 .NET 项目或文件。nuget 提供其他 NuGet 命令。pack 创建 NuGet 包。publish 发布 .NET 项目进行部署。remove 从 .NET 项目中删除包或引用。restore 还原 .NET 项目中指定的依赖项。run 生成并运行 .NET 项目输出。sdk 管理 .NET SDK 安装。sln 修改 Visual Studio 解决方案文件。store 在运行时包存储中存储指定的程序集。test 使用 .NET 项目中指定的测试运行程序运行单元测试。tool 安装或管理扩展 .NET 体验的工具。vstest 运行 Microsoft 测试引擎(VSTest)命令。workload 管理可选工作负荷。捆绑工具中的其他命令:dev-certs 创建和管理开发证书。fsi 启动 F# 交互/执行 F# 脚本。user-jwts 在开发中管理 JSON Web 令牌。user-secrets 管理开发用户密码。watch 启动文件观察程序,它会在文件发生更改时运行命令。运行 "dotnet [command] --help",获取有关命令的详细信息。
VSCode 调试
所需插件

-
vscode-solution-explorer 用于管理解决方案(先打开一个目录 ,然后就可以:创建解决方案、创建项目…)上面讲的命令在这里都有对应的右键菜单

-
C# Dev Kit
- 首次打开C#项目,VSCode 右下角会弹出此提示,点【安装】即可。

- 安装 C# Dev Kit 后会自动装:
.NET Install Tool、C#- IntelliCode for C# Dev Kit 提供自动完成
- 首次打开C#项目,VSCode 右下角会弹出此提示,点【安装】即可。
调试 CS
打开 CS 文件,按 F5 调试运行。
配置
项目.csproj
排除依赖关系
项目文件: C:/demo1/demo1.csproj
使用 <Trim> 和 <PublishTrimmed> 标签:
.NET Core 3.0 及以上版本引入了 trimming(修剪)功能,可以在发布时移除未使用的代码和依赖项。
在你的 .csproj 文件中添加以下内容:
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup>...<PublishTrimmed>true</PublishTrimmed><TrimMode>link</TrimMode></PropertyGroup></Project>
Hello, World!项目未排除无用依赖时 60、70M,排除后 11.5M
launch.json
主菜单 > 运行 > 添加配置:即可生成。
tasks.json
Ctrl + Shift + P :> Tasks: Configure Task
参考资料
什么是 .NET? 简介和概述
dotnet 命令
使用 Visual Studio Code 创建 .NET 控制台应用程序
相关文章:
DotNet 命令行开发
DotNet 命令行开发 下载安装下载 SDK安装 SDK绿色版下载绿化脚本 常用命令创建 dotnet new运行 dotnet run发布应用 dotnet publish更多命令 VSCode 调试所需插件调试 CS 配置项目.csproj排除依赖关系 launch.jsontasks.json 参考资料 下载安装 下载 SDK 我们就下最新的好&am…...
hyperf console 执行
一、原理描述 hyperf中,不难发现比如自定义控制器中获取参数,hyperf.php中容器获取,传入的都是接口,而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类,框架加载的时候将其作为数组,使用的…...
第一篇 设计模式引论 - 探索软件设计的智慧结晶
1. 设计模式的定义和起源 设计模式,这个术语最初在建筑领域被广泛使用,用来描述在建筑设计中反复出现的问题及其解决方案。在软件工程中,设计模式同样指的是在软件设计过程中反复出现的、经过验证的最佳实践和解决方案。 1994年,…...
HBase基础知识(六):HBase 对接 Hive
1. HBase 与 Hive 的对比 1.Hive (1) 数据仓库 Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以 方便使用 HQL 去管理查询。 (2) 用于数据分析、清洗 Hive 适用于离线的数据分析和清洗,延迟较高。 (3) 基于…...
Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error
大致报错日志如下: The last packet successfully received from the server was 11 milliseconds ago. The last packet sent successfully to the server was 10 milliseconds ago.at sun.reflect.GeneratedConstructorAccessor275.newInstance(Unknown Source)…...
Mixtral 8*7B + Excel + Python 超强组合玩转数据分析
Mixtral 8*7B Excel Python 超强组合玩转数据分析 0. 背景1. 使用 Mixtral 8*7B pandas 实现数据导入和导出1.1 使用 Mixtral 8*7B pandas 导入 Excel 文件中的数据1.2 使用 Mixtral 8*7B pandas 导出 Excel 文件中的数据 2. 使用 Mixtral 8*7B pandas 实现单个文件数据的…...
深入浅出理解Web认证:Session、Cookie与Token
在Web开发的世界中,理解Session、Session ID、Cookie和Token之间的区别至关重要。实际上,这些概念并不复杂,只需几句话就能澄清它们的核心区别。 首先,我们需要区分Session和Session ID。Session实际上是存储在服务器端的数据&am…...
智慧零售技术探秘:关键技术与开源资源,助力智能化零售革新
智慧零售是一种基于先进技术的零售业态,通过整合物联网、大数据分析、人工智能等技术,实现零售过程的智能化管理并提升消费者体验。 实现智慧零售的关键技术包括商品的自动识别与分类、商品的自动结算等等。 为了实现商品的自动识别与分类,…...
2012年第一届数学建模国际赛小美赛B题大规模灭绝尚未到来解题全过程文档及程序
2012年第一届数学建模国际赛小美赛 B题 大规模灭绝尚未到来 原题再现: 亚马逊是地球上现存最大的雨林,比地球上任何地方都有更多的野生动物。它位于南美洲大陆的北侧,共有9个国家:巴西、玻利维亚、厄瓜多尔、秘鲁、哥伦比亚、委…...
macos管理本地golang的多版本sdk
背景 无论你是哪个编程语言的开发者,例如 Java、Go 等,通常在本地开发过程中,你经常需要安装相应的 SDK。由于各种原因,往往需要在不同的项目中来回切换多个版本的 SDK。 安装步骤 1.安装homebrew /bin/bash -c "$(curl -…...
count distinct在spark中的运行机制
文章目录 预备 数据和执行语句Expand第一次HashAggregateShuffle and Second HashAggregate最后结果性能原文 预备 数据和执行语句 SELECT COUNT(*), SUM(items), COUNT(DISTINCT product), COUNT(DISTINCT category) FROM orders;假设源数据分布在两个1核的结点上࿰…...
创建加密分区或者文件
文章目录 [GParted 中已清除的分区与未格式化的分区](https://superuser.com/questions/706624/cleared-vs-unformatted-partition-in-gparted)创建加密分区解密创建的加密分区以便挂载格式化设备未具体的格式(这里为ext4格式)创建挂载点目录挂载加密的文…...
STL——遍历算法
1.for_each 函数原型: for_each(iterator beg, iterator end, _func);——// 遍历算法 遍历容器元素; beg 开始迭代器;end 结束迭代器; _func 函数或者函数对象 #include<iostream> using namespace std; #include<ve…...
C语言经典算法【每日一练】20
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 1、先排序 2、插入 #include <stdio.h>// 主函数 void main() {int i,j,p,q,s,n,a[11]{127,3,6,28,54,68,87,105,162,18};//排序(选择排序)…...
Linux磁盘阵列
一.RAID磁盘阵列介绍 RAID(Redundatnt Array of lndependent Disks),全称为:独立冗余磁盘阵列 解释: RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻…...
本地网络禁用了在哪里开启?
在当今数字化时代,网络已经成为人们生活中不可或缺的一部分。然而,有时我们可能需要禁用本地网络,无论是出于安全考虑、提高专注力还是其他原因。本文将探讨禁用本地网络的方法以及如何在需要时重新开启网络连接。 第一部分:禁用…...
[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中
目背景 常见的MySQL、Oracle、SQLServer等数据库都是基于C/S架构设计的,即(客户端/服务器)架构,也就是说我们对数据库的操作相当于一个客户端,这个客户端使用既定的API把SQL语句通过网络发送给服务器端,MyS…...
【Flink SQL API体验数据湖格式之paimon】
前言 随着大数据技术的普及,数据仓库的部署方式也在发生着改变,之前在部署数据仓库项目时,首先想到的是选择国外哪家公司的产品,比如:数据存储会从Oracle、SqlServer中或者Mysql中选择,ETL工具会从Informa…...
idea导入spring-framework异常:error: cannot find symbol
从github上clone代码spring-framework到本地后导入idea,点击gradle构建后控制台提示异常: 具体异常信息: /Users/ZengJun/Desktop/spring-framework/buildSrc/src/main/java/org/springframework/build/KotlinConventions.java:44: error:…...
Unity坦克大战开发全流程——开始场景——开始界面
开始场景——开始界面 step1:设置UI 反正按照这张图拼就行了 step2:写脚本 前面的拼UI都是些比较机械化的工作,直到这里写代码的时候才真正开始有点意思了,从这里开始,我们就要利用面向对象的思路来进行分析࿱…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
