在.net core发布之初,dotnet cli就诞生了,dotnet cli的作用是什么呢?主要是用来创建,还原,构建,发布,测试等一系统管理功能,本来,visual studio中是有这些功能的,那为什么还另外再提供一套呢?


  【注:其实在windows下的.net应用,也是可以通命令行来实现一些功能的,只是vs的功能太好用,太强大,用这些功能的人有限,给人感觉像没有一样


  我总结有两个方面:

  1、开发时:.net core(现在最新版叫.net5)跨平台了,不只只是在有可视化的平台上运行,所以提供dotnet cli是为在这些平台上顺利使用.net core

  2、运维时:现在流行的devopt,也是dotnet cli发挥作用的战场,不管是独立部署的jenkins等工具,还是github,gitlab等云平台,都提供了CICD脚本化编辑功能,方便我们管理.net应用

  下面的例子是gitlab的对.net core项目CI的gilab-ci.yml配置,其中16,20,21,24都是依赖dotnet cli来实现的:

image: mcr.microsoft.com/dotnet/core/sdk:2.2.301

stages:
- test
- deploy

release:
stage: deploy
only:
- master
artifacts:
paths:
- publish/
script:
# The output path is relative to the position of the csproj-file
- dotnet publish -c Release -o ../publish MyProject/MyProject.csproj

debug:
before_script:
- 'echo | dotnet --version' # must be v 2.2.300 or later for reporter tool to work
- dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools
stage: test
script:
- dotnet test --logger "junit" --collect:"XPlat Code Coverage"
# each reporttype must be a separate line, doesn't work together ; separated
- ls -ld ${CI_PROJECT_DIR}/**/TestResults/*
- ./tools/reportgenerator "-reports:${CI_PROJECT_DIR}/**/TestResults/*/coverage.cobertura.xml" "-targetdir:Reports_Coverage" -reportTypes:TextSummary;
- ./tools/reportgenerator "-reports:${CI_PROJECT_DIR}/**/TestResults/*/coverage.cobertura.xml" "-targetdir:Reports_Coverage" -reportTypes:Html;
- ls Reports_Coverage
- cat ./Reports_Coverage/Summary.txt
- echo 'End Summary'
coverage: /Line coverage[\s\S].+%/
artifacts:
paths:
- Reports_Coverage/
reports:
junit:
- '*.Test/TestResults/TestResults.xml'
.....此处省略

  在dotnet cli中,有一个别有洞天的功能,就是dotnet tool了,这个功能给我们打开了一个广阔窗口,一个让我们自己造工具,自己使用工具的窗口。

  比如最常见的我们可以造一个从DB生成实体类的工具(这类工具应该有很多);再比如源码漏洞检测的工具;甚至可以集成一些与项目管理,技术管理的功能(命名是否规范,定义是否规范,要求框架使用是否规范等等)

  今天只是简单引入,关于dotnet tool详细介绍,敬请关注之后公众号文章。


  想要更快更方便的了解相关知识,可以关注微信公众号


您好,dotnet tool_xml