.net持续集成cake篇之使用vs或者vscode来辅助开发cake脚本

系列目录

使用Visual Studio来开发工具

前面我们都是通过手写或者复制的方法来编写Cake文件,Cake使用的是C#语言,如果仅使用简单的文本编辑器来编写显然效率是非常低下的,本节我们讲解如何使用cake Visual Studio插件来通过模板创建cake文件,以及如何使得Visual Studio来调试Cake文件

安装Cake Visual Studio插件

我们在Visual Studio插件管理器里搜索Cake就可以搜索到Cake for visual studio插件,然后我们安装它.

关于Visual插件搜索和安装我们这里不再赘述,假定看的童鞋都有一定.net编程基础.

插件安装完成后,我们再通过Vs添加内容的时候,就可以看到Cake模板

创建的时候我们把它的名称修改为build.cake(这里仍然是惯例,其实也可以是其它名称,但是需要做相应修改,这里先不介绍)

我们使用Vs打开Cake文件,可以看到虽然没有智能提示,但是有一些基本的代码着色

如果关键字有错误,则代码不会高亮着色显示.

使用Visual Studio对Cake脚本进行调试

对于复杂的构建脚本,我们可能需要通过调试来发现排除一些bug,下面介绍如何使用Visual Studio 对Cake脚本进行调试.

我们修改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文件.

使用Visual Studio Code开发工具

虽然Cake提供了vs插件,但是不论是开发和调试体验都不是很好,而cake vs code插件则支持cake文件生成,启动文件build.ps1下载,代码智能提示和调试功能.本节将详细介绍这些功能.

一.安装cake vscode插件

这里我们删除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文件

我们在vscode里点击虫子图标,然后点击右向绿色箭头,这时候中间会出现输入框,我们输入cake便会出现与cake相关的调试配置选项

如果没有反应,再次执行一次.

如果执行成功,这里的文字会变成如图示,如果没有成功,则显示的是No configuration

成功后,再点击绿色右向箭头,如果脚本没有错误,断点会被击中

有了这些贴心的工具,相信大家不会再对cake心有恐惧了.

四.vscode调试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参数的值传入了.

原文地址:https://www.cnblogs.com/tylerzhou/p/11223736.html

时间: 2024-11-05 16:24:56

.net持续集成cake篇之使用vs或者vscode来辅助开发cake脚本的相关文章

IOS使用jenkins进行持续集成 第二篇

上一篇,自己尝试进行持续集成,研究的不深入,这两天,为公司搭建持续集成环境,以及内部发布系统,了解的更多了,所以分享出来. 这篇主要介绍一些其他东西,不重复介绍上一篇的内容. 如果使用jenkins进行ios持续集成,需要xcode插件支持,所以先下载xcode插件,而且后期还要用到ftp服务,也安装ftp的插件. jenkins中可以自己创建特定的视图分组,all视图点击+号就能创建新视图,创建好后,在左侧的编辑视图选项,则会进入详情页,可以选择放入此视图的任务:相对于任务,我觉得最好依据代码

IOS使用jenkins进行持续集成 第一篇

本文主要讲述在开发过程中,提高工作效率而进行的IOS-Jenkins的持续集成. 背景 平时我们开发完成IOS项目,需要打包给测试人员进行测试.其中的过程需要重复进行:修改配置项--编译---连接设备--运行打包--debug进设备中--然后交给等待的测试人员.现有成熟的持续集成Jenkins解决方案,并且该方案也提供了Xcode插件的支持,可以讲上述过程封装成一键解决方案. 我实现的是jenkins执行IOS的job,build工程,签名打ipa包,上传到FTP服务器,放到tomcat下,提供

.net持续集成sonarqube篇之 sonarqube触发webhook

系列目录 WebHook近些年来变得越来越流行,github,gitlab等代码托管平台都提供webhook功能.关于webhook这里不做详细介绍,大家可以参阅读相关互联网书籍或者材料来更深了解.可以把它简单理解为某一事件完成以后的一个回调. 在持续集成环境里,我们可以使用Sonarqube的webhook功能来实现持续发布和发布包归档功能.大致思路是当项目构建成功后我们可以通过webhook通知服务器构建任务已完成,接下来web 服务器可以根据webhook传递的参数决定要处理的包是哪个项目

.net持续集成sonarqube篇之sonarqube基本操作(一)

系列目录 Sonarqube Web管理界面虽然设计的简洁大方,也非常直观,但是由于功能繁多,这对快速入手以及快速定位到想要的功能都是一个挑战,在以后的几个小节里我们简要介绍. OwerView(概览) 概览界面主要展示了项目lint的统计信息 可以看到这些栏目栏目大都是统计数字,并且带有链接,点击链接则可以看到详细信息.其实中有些栏目的统计数字旁边带有带圈的英文字母,这些字母中,从A到E质量依次下降,颜色逐渐由绿色变为红色.项目管理者可以根据这些评级和颜色大致了解某一主题的健康状况. 其中单元

持续集成高级篇之Jenkins Pipeline 集成sonarqube

系列目录 前面章节中我们讲到了Sonarqube的使用,其实Sonarqube获取msbuild结果主要是执行三个命令,开始标记,执行msbuild,结束标记,这些都是命令,是非常容易集成到我们ci流程中的,但是使用这种方式最为简单,但是Sonarqube插件与jenkins集成的更好,我们可以通过jenkins页面看到构建结果是否成功,以及可以通过链接轻松地跳到Sonarqube web管理界面.前面章节我们介绍了如何在自由式任务中使用sonarqube插件,这里我们讲下如何在pipeline

持续集成高级篇之基于win32-openssh搭建jenkins混合集群(一)

系列目录 前面的demo我们使用的都是只有一个windows主节点的的jenkins,实际生产环境中,一个节点往往是不能满足需求的.比如,.net项目要使用windows节点构建,java项目如果部署在linux服务器上往往也需要目标类型的linux节点做为构建节点,开发中使用的jdk版本不同也可能需要不同的构建主机.构建docker镜像往往也需要linux主机(强烈不建议使用docker for windows 进行linux环境的docker构建).本节我们讲解如何搭建一个主节点为windo

.net持续集成sonarqube篇之sonarqube安装与基本配置

系列目录 Sonarqube下载与安装 Sonarqube下载地址是:https://www.sonarqube.org/downloads/下载版本有两个,一个是长期支持版,另一个是最新版,此处安装的是最新版,目前版本是7.3,下载的时候点击醒目的蓝色按钮即可(此时下载的是社区版),下面有三个无底色按钮下载链接,分别对应的是开发者版,企业版和数据中心版,这些版本都不是免费版,需要获取Licence key方可使用.目前起步阶段,使用社区版就Ok了. 注意 Sonarqube是基于java语言开

持续集成高级篇之Jekins参数化构建(二)

系列目录 上一节我们讲解了如何使用bat脚本或者powershell脚本自身的机制来达到参数化构建的目的,这在一定程序上增加了灵活性,然而缺点也相当明显:它只能适应一些相对比较固定的参数传入(比如像上一节讲到的,构建的环境分为(development和production)两种情况,对于一些相对较复杂的情况以上方法就会捉襟见肘,最为明显问题是外部的变化可能导致参数随之做必要更改,最常见的是文件的位置参数,我们指定归档文件的目录为D盘下的一个文件夹,现在D盘满了需要指定为其它盘,则所有的脚本都需要

持续集成高级篇之Jekins参数传入与常见任务

系列目录 有的童鞋可能已经发现,PipeLine项目与自由式项目相比,可配置的项少了很多,比如说环境变量定义,所有步骤完成后执行动作,拉git代码库等.其实这些功能并没有缺,而是配置的方式不一样了,以前是通过图形化界面配置,虽然直观简便,但是功能不能包罗万像,对于一些复杂的项目显得捉襟见肘,而Jenkins PipeLine使用代码配置功能更加强大.以后的章节中我们会介绍常用的配置如何通过PipeLine里的Groovy脚本来实现. 前面讲参数化构建的时候已经讲到对于复杂的构建把一些重复的,常用