[Cake] 3. dotnet 本地工具 cake & dotnet format
在上一篇[Cake] 2. dotnet 全局工具 cake中介绍了通过.Net Core 2.1 的全局工具dotnet tool命令来简化cake的安装和使用。因为是全局安装,则无法适应每个项目对特定版本的要求。随着.Net Core 3.0中增加的对本地工具(项目级别)的支持,使得这一问题得以解决。
1. cake的安装和还原
# 创建一个本地的工具清单文件
dotnet new tool-manifest
# 安装本地工具
dotnet tool install cake.tool --version 0.35.0
dotnet new tool-manifest命令会在当前目录下创建一个.config/dotnet-tools.json的文件。当我们执行dotnet tool install cake.tool时,就会把cake.tool的相关信息写入到这个文件。
{
"version": 1,
"isRoot": true,
"tools": {
"cake.tool": {
"version": "0.35.0",
"commands": [
"dotnet-cake"
]
},
"dotnet-format": {
"version": "3.1.37601",
"commands": [
"dotnet-format"
]
}
}
}
之后就可以执行dotnet cake(或者dotnet tool run dotnet-cake)命令了。
$ dotnet cake --help
Usage: Cake.exe [script] [--target=value] [--verbosity=value]
[--showdescription] [--dryrun] [..]
Example: Cake.exe
Example: Cake.exe build.cake --verbosity=quiet
Example: Cake.exe build.cake --showdescription
Options:
--target <TARGET> Target task to invoke. Script must support this explicitly.
--verbosity=value Specifies the amount of information to be displayed.
(Quiet, Minimal, Normal, Verbose, Diagnostic)
--debug Performs a debug.
--showdescription Shows description about tasks.
--showtree Shows the task dependency tree.
--dryrun Performs a dry run.
--exclusive Execute a single task without any dependencies.
--bootstrap Download/install modules defined by #module directives
--version Displays version information.
--info Displays additional information about Cake execution.
--help Displays usage information.
当我们在CI/CD或者另外一个环境上时,只需要执行
dotnet tool restore
就可以把.config/dotnet-tools.json文件中配置的相关工具安装在本地了。
2. dotnet format 格式化
介绍一下另外一个非常有用的工具dotnet-format。看下官方介绍:
dotnet-format is a code formatter for dotnet that applies style preferences to a project or solution. Preferences will be read from an .editorconfig file, if present, otherwise a default set of preferences will be used. At this time dotnet-format is able to format C# and Visual Basic projects with a subset of supported .editorconfig options.
它会使用.editorconfig中的格式化配置,来统一项目的文件编码和格式。 安装方式同上面的cake一样。
# 安装
dotnet tool install dotnet-format
# 检查并保存
dotnet format
# 只检查不保存,检查失败则返回非0的exit code
dotnet format --check --dry-run
结合CI使用非常方便,当你push的代码不符合格式要求时就直接失败了(一个失败的示例:https://github.com/linianhui/cake.example/commit/471f58754c390cb9946a5282c6d73275b90549d9/checks?check_suite_id=361927437)。
示例,它会提示出那些地方不符合.editorconfig的要求:
$ dotnet format --check --dry-run
1-src/Cake.Example/Animals/Cat.cs(17,2): Add final newline.
1-src/Cake.Example/Animals/Dog.cs(17,2): Add final newline.
1-src/Cake.Example/IAnimal.cs(14,2): Add final newline.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(18,2): Add final newline.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(18,2): Add final newline.
1-src/Cake.Example/Animals/Cat.cs(1,31): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(2,2): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(3,18): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(4,12): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(5,19): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(6,38): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(7,6): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(8,22): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(9,15): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(10,23): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(11,32): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(12,29): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(13,10): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(14,25): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(15,10): Fix end of line marker.
1-src/Cake.Example/Animals/Cat.cs(16,6): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(1,31): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(2,2): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(3,18): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(4,11): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(5,19): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(6,38): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(7,6): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(8,22): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(9,15): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(10,23): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(11,32): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(12,29): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(13,10): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(14,25): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(15,10): Fix end of line marker.
1-src/Cake.Example/Animals/Dog.cs(16,6): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(1,23): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(2,2): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(3,18): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(4,13): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(5,19): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(6,29): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(7,6): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(8,22): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(9,16): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(10,23): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(11,32): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(12,23): Fix end of line marker.
1-src/Cake.Example/IAnimal.cs(13,6): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(1,28): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(2,13): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(2,13): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(4,42): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(5,2): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(6,32): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(7,6): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(8,15): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(9,39): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(10,10): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(11,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(11,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(13,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(13,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(15,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(16,10): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/CatTest.cs(17,6): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(1,28): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(2,13): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(2,13): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(4,42): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(5,2): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(6,32): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(7,6): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(8,15): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(9,39): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(10,10): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(11,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(11,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(13,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(13,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(15,40): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(16,10): Fix end of line marker.
2-test/Cake.Example.Tests/AnimalsTests/DotTest.cs(17,6): Fix end of line marker.
Formatted code file 'Cat.cs'.
Formatted code file 'Dog.cs'.
Formatted code file 'IAnimal.cs'.
Formatted code file 'CatTest.cs'.
Formatted code file 'DotTest.cs'.
Format complete in 3529ms.
dotnet-foramt支持的.editorconfig信息比较丰富,具体的参考 https://github.com/dotnet/format/wiki/Supported-.editorconfig-options 的说明,这里也贴一个我在使用的.editorconfig:
https://github.com/linianhui/code.guide/blob/master/csharp/.editorconfig
3. 参考
源码: https://github.com/linianhui/cake.example
我的.editorconfig : https://github.com/linianhui/code.guide/blob/master/csharp/.editorconfig
https://github.com/dotnet/format/wiki/Supported-.editorconfig-options
https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#local-tools
https://github.com/dotnet/format
[Cake] 3. dotnet 本地工具 cake & dotnet format的更多相关文章
- [Cake] 2. dotnet 全局工具 cake
在上篇博客[Cake] 1. CI中的Cake中介绍了如何在CI中利用Cake来保持与CI/CD环境的解耦. 1. 简化cake的安装 当时dotnet 2.1还未正式发布,dotnet 还没有工具的 ...
- dotnet CLI工具是如何运行你的代码的
原文连接:https://mattwarren.org/2016/07/04/How-the-dotnet-CLI-tooling-runs-your-code/作者 Matt Warren.授权翻译 ...
- [Cake] 1. CI中的Cake
在上一篇C#Make自动化构建-简介中,简单的介绍了下Cake的脚本如何编写以及通过Powershell在本地运行Cake脚本.本篇在此基础上,介绍下如何在CI环境中使用Cake. 1. Cake简介 ...
- .NET Core 3.0 本地工具
.NET Core从最早期的版本就开始支持全局工具了.如果仅仅需要在某个项目中或某个文件夹中使用特定的工具,那么.NET Core 3.0就允许您这样做. 使用.NET Core 3.0,您可以在特定 ...
- X86上搭建交叉工具链,来给龙芯笔记本编译本地工具链(未完待续)
故事的背景是,我买了一台龙芯2F的笔记本来装B. 为什么说是装B呢?因为不但操作系统是Linux,而且CPU还是龙芯的. 一般人有这么酷的装备吗?简直是装B大圣啊. 这里一定要申明一点,本人不是IT技 ...
- X86给龙芯笔记本编译本地工具链(未完待续)
我买了一台龙芯2F的笔记本来当玩具. 买回来发现,这台笔记本上没法安装软件,因为既没有软件仓库,也没有GCC. 因此需要构建交叉工具链和构建本地工具链. 下面是我研究如何搞定着一切的笔记. 工具链组件 ...
- 【dotnet跨平台】"dotnet restore"和"dotnet run"都做了些什么?
[dotnet跨平台]"dotnet restore"和"dotnet run"都做了些什么? 前言: 关于dotnet跨平台的相关内容.能够參考:跨平台.NE ...
- 解决本地工具无法连接服务器上的mysql的问题
当本地工具尝试连接服务器的时候,如果出现无法连接的情况,可能是权限没有开. 首先: mysql> show databases: 发现有mysql数据库 进入该数据库,找到user表 mysq ...
- .net core下的dotnet全局工具
.net core 2.1后支持了一个全新的部署和扩展命令,可以自己注册全局命令行. dotnet install tool -g dotnetsaydotnetsay 也可以自己构建自己的命令行,一 ...
随机推荐
- C#winfrom打开指定的文件
直接打开指定的文件 System.Diagnostics.Process.Start(v_OpenFilePath); 直接打开目录 string v_OpenFolderPath = @" ...
- 星际争霸2 AI开发(持续更新)
准备 我的环境是python3.6,sc2包0.11.1 机器学习包下载链接:pysc2 地图下载链接maps pysc2是DeepMind开发的星际争霸Ⅱ学习环境. 它是封装星际争霸Ⅱ机器学习API ...
- python day 1 homework 2
多级菜单 1 三级菜单 2 可依次选择进入各子菜单 3 所需新知识点,列表,字典 province_info = {":{"name":"黑龙江", ...
- ftp用户和密码
centos7 FTP修改密码: 1.查看ftp的用户:cat /etc/vsftpd/ftpusers 2.passwd ftp的用户 (输入两次) 3.重启ftp:service vsftpd r ...
- Ubuntu 16.04源码编译boost库 编写CMakeLists.txt | compile boost 1.66.0 from source on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/d5d4a460/,欢迎阅读! compile boost 1.66.0 from source on ubuntu 16.04 G ...
- 从零开始在ubuntu上配置深度学习开发环境
从零开始在ubuntu上配置深度学习开发环境 昨天一不小心把原来配置好的台式机的开发环境破坏了,调了半天没有调回来,索性就重装一次ubuntu系统.这篇文章主要记录一个简单的.‘傻瓜式’教程. 一.U ...
- FullGC排查心得
最近线上系统(JDK1.7)出现了多次FullGC,但是情况都不一样,今天有时间,将FullGC的排查思路以及如何解决记录下,供大家一起探讨. 场景一: 系统发布上线之后,里面收到如下告警信息: 内容 ...
- theano function参数
train_rbm = theano.function( [index], # inputs cost, # outputs updates=updates, givens={ x: train_se ...
- Mybatis整合spring(适合小白)
目录 1.整合思路 2.整合需要的jar包 3.整合的步骤 4.Dao的开发的两种实现方式 6.Dao的开发的实现方式总结图 @ Mybatis整合spring其实就是SSM框架中SM的整合集成. 1 ...
- python实现一可升降式的冒泡排序
前几天看了个冒泡的排序,这里手敲了一下代码,简单记录如下: def bubble_sort(arr, order='asc'): # #可选升降序的冒泡排序, order>0升序,order&l ...