.net持續集成cake篇之使用vs或者vscode來輔助開發cake腳本

系列目錄編程

使用Visual Studio來開發工具

前面咱們都是經過手寫或者複製的方法來編寫Cake文件,Cake使用的是C#語言,若是僅使用簡單的文本編輯器來編寫顯然效率是很是低下的,本節咱們講解如何使用cake Visual Studio插件來經過模板建立cake文件,以及如何使得Visual Studio來調試Cake文件json

安裝Cake Visual Studio插件

咱們在Visual Studio插件管理器裏搜索Cake就能夠搜索到Cake for visual studio插件,而後咱們安裝它.visual-studio-code

關於Visual插件搜索和安裝咱們這裏再也不贅述,假定看的童鞋都有必定.net編程基礎.編輯器

插件安裝完成後,咱們再經過Vs添加內容的時候,就能夠看到Cake模板工具

avatar

建立的時候咱們把它的名稱修改成build.cake(這裏仍然是慣例,其實也能夠是其它名稱,可是須要作相應修改,這裏先不介紹)post

咱們使用Vs打開Cake文件,能夠看到雖然沒有智能提示,可是有一些基本的代碼着色visual-studio

avatar

若是關鍵字有錯誤,則代碼不會高亮着色顯示.開發工具

使用Visual Studio對Cake腳本進行調試

對於複雜的構建腳本,咱們可能須要經過調試來發現排除一些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進程),而後點擊這樣就附加進程就成功了.

咱們能夠看到,斷點被擊中了

avatar

咱們能夠像調試普通C#腳本同樣調試cake文件.

使用Visual Studio Code開發工具

雖然Cake提供了vs插件,可是不管是開發和調試體驗都不是很好,而cake vs code插件則支持cake文件生成,啓動文件build.ps1下載,代碼智能提示和調試功能.本節將詳細介紹這些功能.

一.安裝cake vscode插件

這裏咱們刪除build.cake和build.ps1文件,使用vscode來生成它們.

使用vscode 打開項目(文件->打開文件夾)或者在項目所在目錄點擊右鍵,在右鍵菜單中選擇在此處打開vscode選項.

打開後咱們在插件標籤裏搜索cake這樣就打開了搜索搜索界面

avatar

因爲我已經安裝過了,所以後面變成了齒輪圖標,若是沒有安裝則會出現安裝按鈕,安裝完成後從新加載或者重啓vscode方可生效.

而後,咱們按下ctrl+shift+p在出現的命令行裏面輸入cake會出現如下命令

avatar
咱們選擇Install to workspace下面會讓你確認文件名,點擊駕車便可,而後還有有一些提示,只須要一路選擇yes就好了.

完成後會在當前工做區添加build.cake和build.ps1文件

二.添加智能提示

cake Vscode插件一個很是酷的功能就是智能提示,有了智能提示咱們編碼的效率和質量將大大提升.

仍然像上面一個按下ctrl+shift+p在出現的命令框中輸入cake,在出現的下拉中選擇Install intellisense support 過一會後會後vscode右下角會出現安裝成功提示.若是不肯定是否安裝成功能夠再執行一次安裝,若是已成功安裝則提示已經安裝.

有了智能提示之後,咱們輸入task,就會出現提示列表

avatar

須要注意的是智能提示是針對項目環境的,若是是新的項目,仍然須要再次在工做區執行安裝.

三.在vscode裏調試cake文件

咱們在vscode裏點擊蟲子圖標,而後點擊右向綠色箭頭,這時候中間會出現輸入框,咱們輸入cake便會出現與cake相關的調試配置選項

avatar

若是沒有反應,再次執行一次.

avatar

若是執行成功,這裏的文字會變成如圖示,若是沒有成功,則顯示的是No configuration

成功後,再點擊綠色右向箭頭,若是腳本沒有錯誤,斷點會被擊中

avatar

有了這些貼心的工具,相信你們不會再對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參數的值傳入了.

相關文章
相關標籤/搜索