系列目录编程
前面咱们都是经过手写或者复制的方法来编写Cake文件,Cake使用的是C#语言,若是仅使用简单的文本编辑器来编写显然效率是很是低下的,本节咱们讲解如何使用cake Visual Studio插件来经过模板建立cake文件,以及如何使得Visual Studio来调试Cake文件json
咱们在Visual Studio插件管理器里搜索Cake
就能够搜索到Cake for visual studio
插件,而后咱们安装它.visual-studio-code
关于Visual插件搜索和安装咱们这里再也不赘述,假定看的童鞋都有必定.net编程基础.编辑器
插件安装完成后,咱们再经过Vs添加内容的时候,就能够看到Cake模板工具
建立的时候咱们把它的名称修改成build.cake
(这里仍然是惯例,其实也能够是其它名称,可是须要作相应修改,这里先不介绍)post
咱们使用Vs打开Cake文件,能够看到虽然没有智能提示,可是有一些基本的代码着色visual-studio
若是关键字有错误,则代码不会高亮着色显示.开发工具
对于复杂的构建脚本,咱们可能须要经过调试来发现排除一些bug,下面介绍如何使用Visual Studio 对Cake脚本进行调试.ui
咱们修改build.ps1
把最后面三段的内容修改成以下:编码
#&$CAKE_EXE $cakeArguments Invoke-Expression "& `"$CAKE_EXE`" `"$Script`" -target=`"$Target`" -configuration=`"$Configuration`" -verbosity=`"Diagnostic`" $UseMono $UseDryRun $UseExperimental $ScriptArgs --debug" exit $LASTEXITCODE
实际上作的改动是把&$CAKE_EXE $cakeArguments
这一行注释掉了,添加了下面Invoke-Expressions
这一行,其实中--debug是必要的,指明是以debug方式启动脚本,这样脚本在启动后会处于暂停状态,让咱们有机会经过Vs来附加这个进程
咱们首先运行修改后的ps1文件,出现以下信息
Preparing to run build script... Running build script... Module directory does not exist. NuGet.config not found. Performing debug... Attach debugger to process 21244 to continue
其实中process id每一次都是不同的,所以读者看到的和上面的多是不同的.
咱们在Vs里打开要调试的cake文件,设置断点,而后执行调试->附加到进程
在出现的对话框中找到脚本提示的进程(实际上为cake.exe进程),而后点击这样就附加进程就成功了.
咱们能够看到,断点被击中了
咱们能够像调试普通C#脚本同样调试cake文件.
虽然Cake提供了vs插件,可是不管是开发和调试体验都不是很好,而cake vs code插件则支持cake文件生成,启动文件build.ps1下载,代码智能提示和调试功能.本节将详细介绍这些功能.
这里咱们删除build.cake和build.ps1文件,使用vscode来生成它们.
使用vscode 打开项目(文件->打开文件夹)或者在项目所在目录点击右键,在右键菜单中选择在此处打开vscode选项.
打开后咱们在插件
标签里搜索cake
这样就打开了搜索搜索界面
因为我已经安装过了,所以后面变成了齿轮图标,若是没有安装则会出现安装按钮,安装完成后从新加载或者重启vscode方可生效.
而后,咱们按下ctrl+shift+p
在出现的命令行里面输入cake
会出现如下命令
咱们选择Install to workspace
下面会让你确认文件名,点击驾车便可,而后还有有一些提示,只须要一路选择yes
就好了.
完成后会在当前工做区添加build.cake和build.ps1文件
cake Vscode插件一个很是酷的功能就是智能提示,有了智能提示咱们编码的效率和质量将大大提升.
仍然像上面一个按下ctrl+shift+p
在出现的命令框中输入cake,在出现的下拉中选择Install intellisense support
过一会后会后vscode右下角会出现安装成功提示.若是不肯定是否安装成功能够再执行一次安装,若是已成功安装则提示已经安装.
有了智能提示之后,咱们输入task,就会出现提示列表
须要注意的是智能提示是针对项目环境的,若是是新的项目,仍然须要再次在工做区执行安装.
咱们在vscode里点击虫子图标,而后点击右向绿色箭头,这时候中间会出现输入框,咱们输入cake便会出现与cake相关的调试配置选项
若是没有反应,再次执行一次.
若是执行成功,这里的文字会变成如图示,若是没有成功,则显示的是No configuration
成功后,再点击绿色右向箭头,若是脚本没有错误,断点会被击中
有了这些贴心的工具,相信你们不会再对cake心有恐惧了.
咱们知道,正常运行cake是经过build.ps1脚本启动的,经过ps1脚本启动能够传入一些自定义的参数,而在vscode里则是直接点击调试按钮进行调试的,这样咱们就没法经过ps1文件传入参数了,固然咱们能够经过修改cake脚本参数或者经过debug指令来调试,然而这些都不是最好的选择,修改cake文件里的变量后若是忘记修改回原来值则上线后可能出现问题.增长debug对于一些简单的脚本文件来讲显示是小题大做了.其实咱们能够经过修改launch.json
来实现模拟外部传入参数
在vscode里搜索文件快捷方法以下:按下
ctrl+p
而后输入要搜索的文件名称
默认生成的launch.json文件以下
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Cake: Debug Script (CoreCLR)", "type": "coreclr", "request": "launch", "program": "${workspaceRoot}/tools/Cake.CoreCLR/Cake.dll", "args": [ "${workspaceRoot}/build.cake", "--debug", "--verbosity=diagnostic" ], "cwd": "${workspaceRoot}", "stopAtEntry": true, "externalConsole": false } ] }
咱们在args里加入一个configuration参数
修改后以下
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Cake: Debug Script (CoreCLR)", "type": "coreclr", "request": "launch", "program": "${workspaceRoot}/tools/Cake.CoreCLR/Cake.dll", "args": [ "${workspaceRoot}/build.cake", "--debug", "--verbosity=diagnostic", "--configuration=debug" ], "cwd": "${workspaceRoot}", "stopAtEntry": true, "externalConsole": false } ] }
咱们经过单步调试或者经过控制台输入的方式能够看到,configuration参数的值传入了.