当前位置: 首页 > 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 控制台应用程序

http://www.lryc.cn/news/269812.html

相关文章:

  • hyperf console 执行
  • 第一篇 设计模式引论 - 探索软件设计的智慧结晶
  • HBase基础知识(六):HBase 对接 Hive
  • Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error
  • Mixtral 8*7B + Excel + Python 超强组合玩转数据分析
  • 深入浅出理解Web认证:Session、Cookie与Token
  • 智慧零售技术探秘:关键技术与开源资源,助力智能化零售革新
  • 2012年第一届数学建模国际赛小美赛B题大规模灭绝尚未到来解题全过程文档及程序
  • macos管理本地golang的多版本sdk
  • count distinct在spark中的运行机制
  • 创建加密分区或者文件
  • STL——遍历算法
  • C语言经典算法【每日一练】20
  • Linux磁盘阵列
  • 本地网络禁用了在哪里开启?
  • [mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中
  • 【Flink SQL API体验数据湖格式之paimon】
  • idea导入spring-framework异常:error: cannot find symbol
  • Unity坦克大战开发全流程——开始场景——开始界面
  • 【SpringCloud】从实际业务问题出发去分析Eureka-Server端源码
  • Java 代理模式
  • 【Java干货教程】JSON,JSONObject,JSONArray类详解
  • 2023年高级软考系统架构师考题参考
  • 【c语言】飞机大战(1)
  • 关于 K8s 的一些基础概念整理
  • Node.js-fs、path、http模块
  • CentOS 安装WebLogic
  • Linux命令的操作练习
  • 杰发科技AC7840——EEPROM初探
  • WPF 基础入门(简介)