在.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详细介绍,敬请关注之后公众号文章。
想要更快更方便的了解相关知识,可以关注微信公众号