当前位置: 首页 > news >正文

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

  1. C:/mysln 位置,创建一个解决方案
dotnet new sln -o C:/mysln
# 或:进入指定目录 `C:/mysln` 后再创建解决方案文件 `mysln.sln`
cd "C:/mysln"
dotnet new sln -n "mysln"
  1. 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"
  1. 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

    1. 首次打开C#项目,VSCode 右下角会弹出此提示,点【安装】即可。
      在这里插入图片描述
    2. 安装 C# Dev Kit 后会自动装:.NET Install ToolC#- IntelliCode for C# Dev Kit 提供自动完成

调试 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中&#xff0c;不难发现比如自定义控制器中获取参数&#xff0c;hyperf.php中容器获取&#xff0c;传入的都是接口&#xff0c;而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类&#xff0c;框架加载的时候将其作为数组&#xff0c;使用的…...

第一篇 设计模式引论 - 探索软件设计的智慧结晶

1. 设计模式的定义和起源 设计模式&#xff0c;这个术语最初在建筑领域被广泛使用&#xff0c;用来描述在建筑设计中反复出现的问题及其解决方案。在软件工程中&#xff0c;设计模式同样指的是在软件设计过程中反复出现的、经过验证的最佳实践和解决方案。 1994年&#xff0c…...

HBase基础知识(六):HBase 对接 Hive

1. HBase 与 Hive 的对比 1&#xff0e;Hive (1) 数据仓库 Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系&#xff0c;以 方便使用 HQL 去管理查询。 (2) 用于数据分析、清洗 Hive 适用于离线的数据分析和清洗&#xff0c;延迟较高。 (3) 基于…...

Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error

大致报错日志如下&#xff1a; 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开发的世界中&#xff0c;理解Session、Session ID、Cookie和Token之间的区别至关重要。实际上&#xff0c;这些概念并不复杂&#xff0c;只需几句话就能澄清它们的核心区别。 首先&#xff0c;我们需要区分Session和Session ID。Session实际上是存储在服务器端的数据&am…...

智慧零售技术探秘:关键技术与开源资源,助力智能化零售革新

智慧零售是一种基于先进技术的零售业态&#xff0c;通过整合物联网、大数据分析、人工智能等技术&#xff0c;实现零售过程的智能化管理并提升消费者体验。 实现智慧零售的关键技术包括商品的自动识别与分类、商品的自动结算等等。 为了实现商品的自动识别与分类&#xff0c;…...

2012年第一届数学建模国际赛小美赛B题大规模灭绝尚未到来解题全过程文档及程序

2012年第一届数学建模国际赛小美赛 B题 大规模灭绝尚未到来 原题再现&#xff1a; 亚马逊是地球上现存最大的雨林&#xff0c;比地球上任何地方都有更多的野生动物。它位于南美洲大陆的北侧&#xff0c;共有9个国家&#xff1a;巴西、玻利维亚、厄瓜多尔、秘鲁、哥伦比亚、委…...

macos管理本地golang的多版本sdk

背景 无论你是哪个编程语言的开发者&#xff0c;例如 Java、Go 等&#xff0c;通常在本地开发过程中&#xff0c;你经常需要安装相应的 SDK。由于各种原因&#xff0c;往往需要在不同的项目中来回切换多个版本的 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核的结点上&#xff0…...

创建加密分区或者文件

文章目录 [GParted 中已清除的分区与未格式化的分区](https://superuser.com/questions/706624/cleared-vs-unformatted-partition-in-gparted)创建加密分区解密创建的加密分区以便挂载格式化设备未具体的格式&#xff08;这里为ext4格式&#xff09;创建挂载点目录挂载加密的文…...

STL——遍历算法

1.for_each 函数原型&#xff1a; for_each(iterator beg, iterator end, _func);——// 遍历算法 遍历容器元素&#xff1b; beg 开始迭代器&#xff1b;end 结束迭代器&#xff1b; _func 函数或者函数对象 #include<iostream> using namespace std; #include<ve…...

C语言经典算法【每日一练】20

题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 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};//排序&#xff08;选择排序&#xff09…...

Linux磁盘阵列

一.RAID磁盘阵列介绍 RAID&#xff08;Redundatnt Array of lndependent Disks&#xff09;&#xff0c;全称为&#xff1a;独立冗余磁盘阵列 解释&#xff1a; RAID是一种把多块独立的硬盘&#xff08;物理硬盘&#xff09;按不同的方式组合起来形成一个硬盘组&#xff08;逻…...

本地网络禁用了在哪里开启?

在当今数字化时代&#xff0c;网络已经成为人们生活中不可或缺的一部分。然而&#xff0c;有时我们可能需要禁用本地网络&#xff0c;无论是出于安全考虑、提高专注力还是其他原因。本文将探讨禁用本地网络的方法以及如何在需要时重新开启网络连接。 第一部分&#xff1a;禁用…...

[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中

目背景 常见的MySQL、Oracle、SQLServer等数据库都是基于C/S架构设计的&#xff0c;即&#xff08;客户端/服务器&#xff09;架构&#xff0c;也就是说我们对数据库的操作相当于一个客户端&#xff0c;这个客户端使用既定的API把SQL语句通过网络发送给服务器端&#xff0c;MyS…...

【Flink SQL API体验数据湖格式之paimon】

前言 随着大数据技术的普及&#xff0c;数据仓库的部署方式也在发生着改变&#xff0c;之前在部署数据仓库项目时&#xff0c;首先想到的是选择国外哪家公司的产品&#xff0c;比如&#xff1a;数据存储会从Oracle、SqlServer中或者Mysql中选择&#xff0c;ETL工具会从Informa…...

idea导入spring-framework异常:error: cannot find symbol

从github上clone代码spring-framework到本地后导入idea&#xff0c;点击gradle构建后控制台提示异常&#xff1a; 具体异常信息&#xff1a; /Users/ZengJun/Desktop/spring-framework/buildSrc/src/main/java/org/springframework/build/KotlinConventions.java:44: error:…...

Unity坦克大战开发全流程——开始场景——开始界面

开始场景——开始界面 step1&#xff1a;设置UI 反正按照这张图拼就行了 step2&#xff1a;写脚本 前面的拼UI都是些比较机械化的工作&#xff0c;直到这里写代码的时候才真正开始有点意思了&#xff0c;从这里开始&#xff0c;我们就要利用面向对象的思路来进行分析&#xff1…...

STM32调试踩坑记:Keil5卡在0x1FFFF3AA?BOOT引脚配置全解析

STM32调试卡死0x1FFFF3AA&#xff1f;BOOT引脚配置的底层逻辑与实战排查 当你满怀期待地按下Keil5的调试按钮&#xff0c;却发现程序卡死在0x1FFFF3AA这个神秘地址&#xff0c;JLINK连接正常却无法进入main()函数——这种场景对STM32开发者来说再熟悉不过。本文将从芯片启动机制…...

Qwen3-32B私有部署镜像解析:为何必须120GB内存?swap+page cache内存占用深度分析

Qwen3-32B私有部署镜像解析&#xff1a;为何必须120GB内存&#xff1f;swappage cache内存占用深度分析 1. 镜像概述与核心特性 1.1 专为RTX4090D优化的部署方案 本镜像针对NVIDIA RTX 4090D 24GB显存显卡进行了深度优化&#xff0c;基于CUDA 12.4和驱动550.90.07构建完整运…...

树莓派变身工业PLC:用CODESYS Control打造低成本自动化控制系统(附HMI配置)

树莓派变身工业PLC&#xff1a;用CODESYS Control打造低成本自动化控制系统&#xff08;附HMI配置&#xff09; 在工业自动化领域&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;一直是产线控制的核心设备。但传统PLC动辄上万元的价格&#xff0c;让许多中小企业和教…...

python chatTts实现tts文本转语音、音频

文章目录步骤其他文档edge-tts没有实现精确控制&#xff0c;所以再试试chatTts。这是一个开源项目&#xff0c;更容易把控。步骤 推荐从git项目开始做示例&#xff0c;比从头搭建方便很多。 1、pycharm新建 | 来自版本控制的项目 | 项目名称填chatTts-demo-git&#xff0c;地…...

UVW对位平台与Halcon联合C#编程学习参考

uvw对位平台&#xff0c;halcon联合c#编程&#xff0c;供学习的朋友参考最近在搞工业视觉对位平台&#xff0c;发现uvw平台这玩意儿是真有意思。三轴联动的机械结构配合视觉校正&#xff0c;比传统的XYθ平台灵活多了。今天就跟大伙儿唠唠怎么用HalconC#玩转这个组合&#xff0…...

用3D Gaussian Splatting自制3D模型:从视频到点云的完整流程(Colmap+FFmpeg)

用3D Gaussian Splatting打造个性化3D模型&#xff1a;从视频采集到交互式渲染的全链路实践 当你想为游戏场景添加一个自定义角色&#xff0c;或是为电商平台创建商品三维展示时&#xff0c;专业3D扫描设备的高昂成本往往令人却步。现在&#xff0c;借助3D Gaussian Splatting&…...

一年省1.2亿、相当于白得一条产线:千亿锂电巨头把调度权交给AI之后发生了什么

摘要当90%的工厂陷入“半自动陷阱”&#xff0c;局部效率的堆砌正在成为全局负担。磅旗用“AI智能体工厂”给出答案&#xff1a;让机器自主协同&#xff0c;赋予工厂思考能力。为何工厂规模越做越大&#xff0c;反而越做越累&#xff1f;这不是管理问题&#xff0c;而是范式困境…...

Guohua Diffusion 开发环境搭建:从零配置IDE到运行第一个Demo

Guohua Diffusion 开发环境搭建&#xff1a;从零配置IDE到运行第一个Demo 想自己动手玩玩Guohua Diffusion&#xff0c;改改模型&#xff0c;跑跑实验&#xff0c;结果第一步就被开发环境给卡住了&#xff1f;别急&#xff0c;这事儿我太熟了。从IDE装哪个版本&#xff0c;到P…...

如何利用SwinIR智能石油监测技术:图像分析增强的终极指南 [特殊字符]️

如何利用SwinIR智能石油监测技术&#xff1a;图像分析增强的终极指南 &#x1f6e2;️ 【免费下载链接】SwinIR SwinIR: Image Restoration Using Swin Transformer (official repository) 项目地址: https://gitcode.com/gh_mirrors/sw/SwinIR SwinIR智能石油监测技术正…...

AIGlasses_for_navigation显存优化:FP16量化部署让4GB显存稳定运行

AIGlasses_for_navigation显存优化&#xff1a;FP16量化部署让4GB显存稳定运行 1. 项目背景与挑战 AIGlasses_for_navigation是一个基于YOLO分割模型的视频目标分割系统&#xff0c;专门为AI智能盲人眼镜导航系统设计。这个系统能够实时检测和分割图片视频中的盲道和人行横道…...