系列目錄編程
前面咱們都是經過手寫或者複製的方法來編寫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參數的值傳入了.