温故知新,DotNet Core SDK和.Net CLI十八般武艺

简介

.NET命令行接口 (CLI) 工具是用于开发、生成、运行和发布.NET应用程序的跨平台工具链。

https://docs.microsoft.com/zh-cn/dotnet/core/tools/

SDK

  • .NET SDK (Software Development Kit) v5.0.201.exe

里程碑发布日期
.NET Core 2.1.x (servicing)LTS (Long Term Support) release. Approximately every 1-2 months or as needed.
.NET Core 3.1.x (servicing)LTS (Long Term Support) release. Approximately every 1-2 months or as needed.
.NET 5.0Release scheduled for November 2020
.NET 6.0LTS (Long Term Support) release, scheduled for November 2021
.NET 7.0Release scheduled for November 2022
.NET 8.0LTS (Long Term Support) release, scheduled for November 2023
  • https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install

  • https://github.com/dotnet/core/blob/main/roadmap.md

检查安装

dotnet

新建

dotnet new $templateName

其中常见的模板名称有:

模板名字短名称版本要求
控制台应用程序console>= 1.0
类库classlib>= 1.0
WPF应用程序wpf>= 3.0
WPF类库wpflib>= 3.0
WPF自定义控件库wpfcustomcontrollib>= 3.0
WPF用户控件库wpfusercontrollib>= 3.0
Windows窗体(WinForms) 应用程序winforms>= 3.0
Windows窗体(WinForms)类库winformslib>= 3.0
Worker Serviceworker>= 3.0
单元测试项目mstest>= 1.0
NUnit 3测试项目nunit>= 2.1
NUnit 3测试项nunit-test>= 2.2
xUnit 测试项目xunit>= 1.0
Razor组件razorcomponent>= 3.0
Razor页page>= 2.0
MVC ViewImportsviewimports>= 2.0
MVC ViewStartviewstart>= 2.0
Blazor 服务器应用blazorserver>= 3.0
Blazor WebAssembly应用blazorwasm>= 3.1
ASP.NET Core空web>= 1.0
ASP.NET Core Web应用程序 (Model-View-Controller)mvc>= 1.0
ASP.NET Core Web 应用程序webapprazor>= 2.0
含 Angular 的ASP.NET Coreangular>= 2.0
含 React.js 的ASP.NET Corereact>= 2.0
含 React.js 和 Redux 的ASP.NET Corereactredux>= 2.0
Razor类库razorclasslib>= 2.1
ASP.NET Core Web APIwebapi>= 1.0
ASP.NET Core gRPC服务grpc>= 3.0
dotnet gitignore文件gitignore>= 3.0
global.json文件globaljson>= 2.0
NuGet配置nugetconfig>= 1.0
Dotnet本地工具清单文件tool-manifest>= 3.0
Web配置webconfig>= 1.0
解决方案文件sln>= 1.0
协议缓冲区文件proto>= 3.0

可选参数--list可查看本地安装的所有模板

dotnet new --list

可选参数-f 指定目标框架版本号

dotnet new $templateName -f $frameworkName

  • net5.0

  • netcoreapp3.1

  • netcoreapp3.0

  • netcoreapp2.1

dotnet new webapi -f netcoreapp2.1

dotnet new webapi -f netcoreapp3.1

dotnet new webapi -f netcoreapp2.2

dotnet new webapi -f net5.0

可选参数-n 指定创建的输出名称,否认默认是当前文件夹名称

dotnet new webapi -n $projectName

https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new

可选参数-o 指定输出目录,默认是当前目录

dotnet new webapi -o $projectName

可选参数--no-https关闭默认HTTPS要求,方便开发调试

dotnet new webapi -o $projectName --no-https

还原依赖

dotnet restore
dotnet restore $target.csproj

运行

dotnet run

输出文件会写入到默认位置,即bin/<configuration>/<target>。例如,如果具有netcoreapp2.1应用程序并且运行dotnet run,则输出置于bin/Debug/netcoreapp2.1。将根据需要覆盖文件。临时文件将置于obj目录。

如果在上下文中,需要直接运行某个文件,可以用

dotnet $fileName

禁止隐式还原

dotnet run --no-restore

禁止生成项目

dotnet run --no-build

生成

dotnet build

dotnet build命令将项目及其依赖项生成为一组二进制文件。二进制文件包括扩展名为.dll的中间语言 (IL) 文件中的项目代码。

根据项目类型和设置,可能会包含其他文件,例如:

  • 可用于运行应用程序的可执行文件(如果项目类型是面向.NET Core 3.0或更高版本的可执行文件)。

  • 用于调试的扩展名为.pdb的符号文件。

  • 列出了应用程序或库的依赖项的.deps.json文件。

  • 用于指定应用程序的共享运行时及其版本的.runtimeconfig.json文件。

  • 项目通过项目引用或 NuGet 包引用所依赖的其他库。

对于目标版本低于.NET Core 3.0的可执行项目,通常不会将NuGet中的库依赖项复制到输出文件夹。而是在运行时从NuGet全局包文件夹中对其进行解析。

对于面向.NET Core 3.0及更高版本的可执行项目,库依赖项会被复制到输出文件夹。这意味着如果没有其他任何特定于发布的逻辑(例如,Web项目具有的逻辑),则应可部署生成输出。

输出可执行文件还是输出库的配置

要生成库,请省略<OutputType>属性或将其值更改为Library

<PropertyGroup><OutputType>Exe</OutputType>
</PropertyGroup>

<PropertyGroup><OutputType>Library</OutputType>
</PropertyGroup>

指定生成模式

  • Debug

  • Release

dotnet build -c Release

dotnet build -c Debug

指定文件版本

dotnet build -p:Version=$targetVersion

清理

dotnet clean
dotnet clean -c Release

打包

dotnet pack
dotnet pack -c Release

默认情况下,Web 项目不可打包。若要覆盖默认行为,请将以下属性添加到 .csproj 文件中

<PropertyGroup><IsPackable>true</IsPackable>
</PropertyGroup>

Nuget

添加源

dotnet nuget add source $nugetUrl -n $sourceName

列举源

dotnet nuget list source

删除源

dotnet nuget remove source $sourceName

推送包到指定源

dotnet nuget push $packageName.nupkg -k $sourceAuthKey -s $sourceUrl

删除包

dotnet nuget delete $packageName $packageVersion -s $sourceName

发布

dotnet publish

dll文件的形式将应用发布为依赖于框架的应用时,将创建跨平台二进制文件。 dll文件将与项目同名。例如,如果有名为demoForWebApp3.1的应用,则会创建名为demoForWebApp3.1.dll的文件。以这种方式发布的应用可通过dotnet <filename.dll>命令运行,并且可在任意平台上运行。

只要安装了目标.NET 运行时,就可以在任何操作系统上运行跨平台二进制文件。如果未安装目标.NET运行时,如果将应用配置为前滚,则它可以使用较新的运行时运行。

指定框架的发布

--runtime => -r

dotnet publish -r linux-x64 --self-contained false
dotnet publish -r win-x64 --self-contained false

所有可选的框架清单:https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog

其中--self-contained false参数表示不包括对应框架运行时。

dotnet publish -r linux-x64
dotnet publish -r win-x64

将包含完整的目标框架运行时+程序

将应用发布为独立应用,将生成特定于平台的可执行文件。输出发布文件夹包含应用的所有组件,包括.NET库和目标运行时。应用独立于其他.NET应用,且不使用本地安装的共享运行时。应用的用户无需下载和安装.NET。

直接生成ReadyToRun映像

dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true

使用ReadyToRun映像发布可以缩短应用程序的启动时间,但代价是增加应用程序的大小。

https://docs.microsoft.com/zh-cn/dotnet/core/deploying/#produce-a-cross-platform-binary

指定项目文件发布

dotnet publish $packageName.csproj

监听并自动生成

开发阶段在源文件发生变动的情况下就自动执行dotnet build

dotnet watch run

包管理

添加包

dotnet add package $packageName
dotnet add package $packageName -v $packageVersion

查看已安装包

dotnet list package

移除某安装包

dotnet remove package $packageName

用VSC打开当前目录

先cd到需要打开的当前目录,然后输入命令:

code .

让VSC支持C#语法检查

只要安装C#插件即可。

让VSC支持自动Using

只要安装Auto-Using for C#这个插件即可。

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

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

相关文章

谁说数学没用,一旦我们用在赚钱上,全世界都害怕

今天来说说“量化”投资这个门派的开山祖师、美国“赌神”——爱德华 索普。爱德华 索普是一位大教授&#xff0c;天才数学家&#xff0c;非常喜欢扑克牌博弈游戏。一般人玩扑克也就只盯着眼前输赢&#xff0c;爱德华 索普却花了两年时间利用早期的IBM计算机和概率论中的凯利…

2021年春招Elasticsearch面试题

1、Elasticsearch是如何实现master选举的&#xff1f;1、对所有可以成为master的节点根据nodeId排序&#xff0c;每次选举每个节点都把自己所知道节点排一次序&#xff0c;然后选出第一个&#xff08;第0位&#xff09;节点&#xff0c;暂且认为它是master节点。 2、如果对某个…

android qq红包,Android实现QQ抢红包插件

又想到快要过年了&#xff0c;到时候还不知道群里要发好多红包&#xff0c;所以我将之前在网上宕的一份微信抢红包的代码修改了一下&#xff0c;实现了QQ抢红包&#xff01;可以支持抢QQ拼手气红包&#xff0c;普通红包&#xff0c;口令红包&#xff0c;现在再也不怕20年单身手…

8个Python高效数据分析的技巧

不管是参加Kaggle比赛&#xff0c;还是开发一个深度学习应用&#xff0c;第一步总是数据分析。这篇文章介绍了8个使用Python进行数据分析的方法&#xff0c;不仅能够提升运行效率&#xff0c;还能够使代码更加“优美”。一行代码定义List定义某种列表时&#xff0c;写For 循环过…

NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

咨询区 JDawg&#xff1a;我正在将 Web API 2 移植到 ASP.NET Core Web API 上&#xff0c;以前我都直接在 Response 属性上添加自定义的 Header&#xff0c;如下代码所示&#xff1a;HttpResponseMessage response new HttpResponseMessage(HttpStatusCode.OK); response.Hea…

一个免费兑换iPhone X的机会,就这样被你错过了

嗨~我是大家最爱的小树&#xff0c;第一次写文&#xff0c;有点小鸡冻&#xff01;&#xff01;&#xff01;小树此行是带着超模君的礼物来的哦&#xff01;上周准备会员周回馈粉丝的时候&#xff0c;超模君突然决定要送模友们&#xff1a;iPhone X &#xff01;&#xff01;&a…

正则表达式学习神器!

推荐一款优秀的正则表达式在线可视化工具我相信很多朋友第一次听到正则表达式时&#xff0c;都感觉这是一个高大上的名词。其实&#xff0c;简单来说&#xff0c;正则表达式就是用来匹配文本的。正则表达式里的 “正” 是指常客&#xff0c;即经常出现、通用的意思&#xff1b;…

数据可视化,带给你的惊艳并不止这一点!

在大数据时代的现今&#xff0c;数据庞大且繁杂&#xff0c;仅通过简单的数据整理得出清晰的结论&#xff0c;已经不太合理。实际上&#xff0c;若要简明扼要地展示出结论&#xff0c;不妨考虑一下数据可视化。那么&#xff0c;什么是数据可视化呢&#xff1f;数据可视化&#…

关于C3P0容错和自动重连特性的研究

为什么80%的码农都做不了架构师&#xff1f;>>> 最近常有数据库和网络设备升级和搬迁等事情&#xff0c;而各个应用都是基于数据库连接池做的&#xff0c;大部分都是基于C3P0&#xff0c;数据库或网络状况的变动都会导致客户端连接池中的connection失效&#xff0c…

android otg主从切换,一种自动切换OTG设备主从模式下的Vbus电压的方法与电路与流程...

本发明涉及otg设备的检测领域&#xff0c;更具体地说&#xff0c;涉及一种自动切换otg设备主从模式下的vbus电压的方法与电路。背景技术&#xff1a;现有技术中&#xff0c;具备otg功能的设备通过检测usb_id引脚的状态来判断工作为host(主模式/usb_id悬空)或者device(从模式/us…

又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析

一&#xff1a;背景 1. 讲故事前天有位粉丝朋友在后台留言让我帮忙看看他的 Winform程序 UI无响应 410线程 到底是啥情况&#xff0c;如下图&#xff1a;说实话&#xff0c;能看到这些真实案例我是特别喜欢的???????????? &#xff0c;就像医生看病&#xff0c;光…

别乱说,算法才不是脑筋急转弯

老崔去某厂笔试时&#xff0c;遇到了经典的「狼、羊、白菜 过河问题」。由于经常看算法方面的内容&#xff0c;这道对于他来说&#xff0c;so easy。题目大概是这样&#xff1a;题号1&#xff1a;农夫需要把狼、羊、菜和自己运到河对岸去&#xff0c;只有农夫能够划船&#xff…

HTML坐标不随着屏幕大小改变,HTML热区map坐标,随窗口大小自适应办法(javascript)...

为图片添加MAP&#xff1a;/>/>/>/>图片大小随页面变化&#xff0c;需要MAP中每个area的坐标也随页面等比例变化。Javascript实现&#xff1a;adjust();var timeout null;//onresize触发次数过多&#xff0c;设置定时器window.onresize function () {clearTimeou…

NET问答: Find() 和 Where().FirstOrDefault() 该如何选择 ?

咨询区 KingOfHypocrites&#xff1a;我经常看到别人用 Where.FirstOrDefault() 获取某一个匹配集合的第一个元素&#xff0c;我在想为什么他们不使用 Find() 呢 ? 是不是前者更高级一点&#xff1f;有人能告诉我它们的差别吗&#xff1f;比如下面的代码&#xff1a;namespace…

python实战,教你用微信每天给女朋友说晚安

但凡一件事&#xff0c;稍微有些重复&#xff0c;我就考虑怎么样用程序来实现它。这里给各位程序员朋友分享如何每天给朋友定时微信发送”晚安“&#xff0c;故事&#xff0c;新闻等等。最好运行在服务器上&#xff0c;这样后台挂起来更方便。准备&#xff1a;**微信号** pip i…

学计算机与学英语作文,初二英语作文(关于计算机与学习)

鲁铁华回答&#xff1a;Thereisabiginfluenceoftechniqueonourdailylife.Electronicdevices,multimediaandcomputersarethingswehavetodealwitheveryday.EspeciallytheInternetisbecomingmoreandmoreimportantfornearlyeverybodyasitisoneofthenewestandmostforward-lookingmed…

10号发工资和20号发工资的公司,区别竟然这么大?

工资的话题一直占据着职场热度榜单这不最近又热起来了10号发工资和20号发工资&#xff0c;就能看出一个公司是否靠谱?对很多工薪族来说发工资这一天是脱贫致富的重要日子也是很多人的还款日子而这几年&#xff0c;一直有种说法发薪日是公司生态的一个缩影可以由此看出一个公司…

Exchange2003-2010迁移系列之九,创建DAG组

创建DAG两台Mailbox服务器部署完成后&#xff0c;我们接下来要在Mailbox服务器上配置DAG了。配置DAG的目的是为了增强邮件服务器的高可用&#xff0c;避免一台Mailbox服务器损坏之后&#xff0c;邮件系统用户无法访问邮箱。但在部署DAG之前&#xff0c;我们要了解下列几点&…

2011 美术

以下内容为互联网获得&#xff0c;本人不对答案负责&#xff01;如果文章引用对您造成伤害&#xff0c;请联系我&#xff0c;将其删除&#xff01;1、文艺复兴三杰达芬奇、米开朗基罗、拉斐尔2、古埃及绘画以附着于墓室墙体的壁画 代表&#xff0c;与浮雕具有相同的艺术特征&am…

趣图:脸部识别最快的实现

脸部识别/追踪最快的实现&#xff0c;没有之一↓↓↓网友评论&#xff1a;二零醚&#xff1a;硬件实现的效率总是最高的胡斌dev&#xff1a;使用这个程序是不是还配送一个框框&#xff1f;fan__y&#xff1a;牛逼&#xff0c;连转过去都能识别到Shao_Meng&#xff1a;而且 CPU …