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 控制台应用程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/227114.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

draw.io学习笔记

1、链接 1.1、自动连接图形 鼠标放在图形上&#xff0c;点击出现的箭头&#xff0c;会自动出常用图形 1.2、固定连接 如果拖动其中一个图形的话&#xff0c;固定链接的形状会是曲线连过去。 方法&#xff1a;不要点击左边图形鼠标放在边框上面左边出现绿圆点鼠标左键点击图形的…

LTPI协议的理解——2、LTPI实现的底层架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——2、LTPI实现的底层架构 前言一、体系结构三、实现细节四、物理接口信号传输方法总结 前言 前面讲了LTPI的定义和大概结构&#xff0c;接下来继续理解LTPI…

【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)

【Linux系统编程二十五】&#xff1a;线程概念(Linux中的轻量级进程&#xff09; 一.线程的概念1.地址空间是资源窗口 二.线程初步理解1.进程执行分支(内部运行)2.执行粒度更细3.重构进程概念&#xff1a;系统资源分配的基本实体4.重构线程概念&#xff1a;系统调度的基本单位5…

Kubernetes 学习总结(43)—— Kubernetes 从提交 deployment 到 pod 运行的全过程

当用户向 Kubernetes 提交了一个创建 deployment 的请求后&#xff0c;Kubernetes 从接收请求直至创建对应的 pod 运行这整个过程中都发生了什么呢&#xff1f; kubernetes 架构简述 在搞清楚从 deployment 提交到 pod 运行整个过程之前&#xff0c;我们有先来看看 Kubernete…

4. 云原生之kubesphere基础服务搭建

文章目录 安装kubesphere插件服务暴露NodePort方式LoadBalancer方式安装 OpenELB部署eip资源配置网关启动网关创建路由测试网关路由ingress高级功能在服务中配置LoadBalancer 基础设施部署服务部署建议helm仓库添加helm仓库 运维相关部署gitlab部署nexus3部署harbor 研发相关 安…

【c语言】飞机大战(1)

提前准备好游戏要的素材&#xff0c;可以到爱给网去找&#xff0c;飞机大战我们需要的是一个我方战机图片&#xff0c;一个背景图&#xff0c;三个敌方战机的图&#xff0c;我方战机的图片&#xff0c;敌方战机的图片&#xff0c;并且将图片和.cpp放在同一文件夹下. 这里创建.…

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;…

vue+element+springboot实现多张图片上传

1.需求说明 2.实现思路 3.el-upload组件主要属性说明 4.前端传递MultipartFile数组与服务端接收说明 5.完整代码 1.需求说明 动态模块新增添加动态功能,支持多张图片上传.实现过程中对el-upload组件不是很熟悉,踩了很多坑,当然也参考过别的文章,发现处理很…

2023总结与展望--Empirefree

今年一篇博客都没写过了&#xff0c;好像完全在忙在工作和生活上面了&#xff0c;珍惜自我&#xff0c;保持热情&#xff0c;2024对我好点 文章目录 &#x1f525;1. 年终总结1.1.学习工作计划1.2. 生活计划1.3 个人总结 &#x1f525;2. 未来展望 &#x1f525;1. 年终总结 1…

Windows Server 2012一键安装PHP5.4.45环境-护卫神

Windows Server 2012一键安装PHP环境&#xff08;PHP5.4FastCGI模式&#xff09; (hws.com)护卫神PHP套件|mysql安装|php环境|安装php (hws.com) 护卫神PHP套件|mysql安装|php环境|安装php

【无标题】《巴黎图书馆》,又发现一本书

我喜愛看的书(https://img-blog.csdnimg.cn/8cd84d33e6724f09a46831f75abe6464.jpg)在这里插入图片描述

Linux命令:wc -l计算文件中的行数

wc -l是一个Linux命令&#xff0c;用于计算文件中的行数。以下是wc -l命令的详细说明&#xff1a; 命令格式&#xff1a;wc -l [文件名] 选项&#xff1a; -l&#xff1a;仅计算文件中的行数。 用法&#xff1a; 如果不指定文件名&#xff0c;则wc -l命令将从标准输入读取数…

Nature | 大型语言模型(LLM)能够发现和产生新知识吗?

大型语言模型&#xff08;LLM&#xff09;是基于大量数据进行预训练的超大型深度学习模型。底层转换器是一组神经网络&#xff0c;这些神经网络由具有自注意力功能的编码器和解码器组成。编码器和解码器从一系列文本中提取含义&#xff0c;并理解其中的单词和短语之间的关系。通…

封装uniapp签字板

新开发的业务涉及到签字功能&#xff0c;由于是动态的表单&#xff0c;无法确定它会出现在哪里&#xff0c;不得已封装模块。 其中涉及到一个难点就是this的指向性问题&#xff0c; 第二个是微信小程序写法&#xff0c; 我这个写法里用了u-view的写法&#xff0c;可以自己修改组…

JavaScript:正则表达式

JavaScript&#xff1a;正则表达式 什么是正则表达式正则表达式语法定义正则表达式判断是否有匹配的字符串查找匹配的字符串 正则表达式匹配法则元字符边界符量词字符类 什么是正则表达式 正则表达式用于匹配字符串中字符的组合模式。 正则表达式会依据其自身语法&#xff0c;…

关键字:abstract关键字

在 Java 中&#xff0c;abstract是一个关键字&#xff0c;用于修饰类和方法。当一个类被声明为抽象类时&#xff0c;它不能被实例化&#xff0c;只能被其他类继承。同时&#xff0c;抽象类可以包含抽象方法&#xff0c;抽象方法没有方法体&#xff0c;只包含方法的签名&#xf…

计算机网络复习5

传输层——端到端 文章目录 传输层——端到端功能传输层的寻址与端口UDPTCPTCP连接管理TCP可靠传输TCP流量控制TCP拥塞控制网络拥塞的处理 功能 从通信和信息处理的角度看&#xff0c;传输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同…

年度总结和规划

年度总结和规划 目录概述需求&#xff1a; 设计思路实现思路分析1.技术总结2.管理总结3.职业计划比较 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait…

准备用vscode代替sourceinsight

vscode版本1.85.1 有的符号&#xff0c;sourceinsight解析不到。 看网上说vscode内置了ripgrep&#xff0c;但ctrlshiftf在文件里查找的时候&#xff0c;速度特别慢&#xff0c;根本不像ripgrep的速度。ripgrep的速度是很快的。 但今天再查询&#xff0c;速度又很快了&#x…

Python武器库开发-武器库篇之上传本地仓库到Git(三十八)

武器库篇之上传本地仓库到Git(三十八) 当我们在Git中创建远程仓库和进行了SSH key免密登陆之后&#xff0c;我们点击 Your respositories 可以查看我们所创建的远程仓库&#xff0c;如图所示&#xff1a; 如果我们需要将本地的仓库上传到Git&#xff0c;首先我们需要建立一个本…