文章目錄
關於 Visual Studio 中的外部工具(External Tools)
TDD 第三天課程中,有個重點是使用 Pickles 與 SpecFlow 來產生測試及說明文件,做法就是透過 Visual Studio 來執行外部工具,因為之前沒有使用過 Visual Studio 外部工具的 經驗加上練習時發現有些眉眉角角要注意,順手筆記一下
預設內建工具
Visual Studio 2015 及之前版本
Create GUID
產生 GUID
Error Lookup
從輸入的值取得錯誤訊息
PreEmptive Dotfuscator and Analytics >保護 .NET 程式免於反向工程
SPY++ 及 SPY++ x64
以圖形化方式顯示處理序、執行緒、視窗及視窗訊息
WCF Service Configuration Editor
可用以建立及修改 WCF 服務的組態設定

Visual Studio 2017
WCF Service Configuration Editor
可用以建立及修改 WCF 服務的組態設定

其他工具都不再內建,從 vs_installer 中也沒有選項可以裝回來,以 Create GUID 為例,VS 2017 已排除安裝對應的 guidgen.exe

自訂執行工具
Visual Studio 主選單 Tools –> External Tools…

填寫自訂工具

Title
顯示在選單上的名稱

Command
執行檔案的位置,支援執行檔格式請參照下一節說明
Arguments
執行時需要參數,選擇的參數說明請參照下方章節
Initial directory
指定執行起始資料夾
Use Output windows
.exe不支援這個選項
與
Close on exit互斥,無法同時使用將結果輸出於 Visual Studio Output 視窗中

Prompt for arguments
執行時會跳出參數選擇視窗

Treat output as Unicode
- 將指令執行結果 output 使用 Unicode 編碼
- 需搭配
Use Output windows使用 .exe不支援這個選項
Close on exit
- 執行結束後關閉
- 與
Use Output windows互斥,無法同時使用 .exe不支援這個選項
支援執行格式
- .exe
- .com
- .pif
- .bat
- .cmd

參數
| 參數 | 說明 | 範例 |
|---|---|---|
| $(ItemPath) | 目前檔案的完整檔案名稱 (磁碟機 + 路徑 + 檔案名稱) | C:\Projects\TestForWebApi\TestForWebApi\Views\Home\Index.cshtml |
| $(ItemDir) | 目前檔案的目錄 (磁碟機 + 路徑) | C:\Projects\TestForWebApi\TestForWebApi\Views\Home\ |
| $(ItemFilename) | 目前檔案的檔案名稱 (檔案名稱) | Index |
| $(ItemExt) | 目前檔案的副檔名 | .cshtml |
| $(CurLine) | 程式碼視窗中滑鼠游標目前的行位置 | 10 |
| $(CurCol) | 程式碼視窗中滑鼠游標目前的資料行位置 | 6 |
| $(CurText) | 選取的文字 | <hr/> |
| $(TargetPath) | 要建置之項目的完整檔案名稱 (磁碟機 + 路徑 + 檔案名稱) | C:\Projects\TestForWebApi\TestForWebApi\obj\Debug\TestForWebApi.dll |
| $(TargetDir) | 要建置之項目的目錄 | "C:\Projects\TestForWebApi\TestForWebApi\obj\Debug\" |
| $(TargetName) | 要建置之項目的檔案名稱 | TestForWebApi |
| $(TargetExt) | 要建置之項目的副檔名 | .dll |
| $(BinDir) | 正在建置之二進位檔的最終位置 (定義為磁碟機 + 路徑) | C:\Projects\TestForWebApi\TestForWebApi\bin\ |
| $(ProjectDir) | 目前專案的目錄 (磁碟機 + 路徑) | C:\Projects\TestForWebApi\TestForWebApi\ |
| $(ProjectFileName) | 目前專案的檔案名稱 (磁碟機 + 路徑 + 檔案名稱) | TestForWebApi.csproj |
| $(SolutionDir) | 目前方案的目錄 (磁碟機 + 路徑) | C:\Projects\TestForWebApi\ |
| $(SolutionFileName) | 目前方案的檔案名稱 (磁碟機 + 路徑 + 檔案名稱) | TestForWebApi.sln |
心得
參數不少,光看說明可能不太好理解用途,我的做法是一一將參數輸出來比對,下面提供個人做法
方法一:使用指令輸出
- 新增一個 .bat 檔
echo 參數
- %1…%9 分別代表第一個參數…直到第九個參數
- %0 代表執行檔位置(ex:c:\test.bat)
- %* 所有參數
搭配
Use Output windows
方法二:使用
Prompt for arguments- 指定隨意執行檔
- 勾選
Prompt for arguments - 執行自訂工具時選擇參數即會輸出對應指令及參數

另外有個小地方提醒一下:參數之間需要用空白符號隔開,否則將會被當做同個參數,會讓實際行為與預期有落差
參考資訊
文章作者 Yowko Tsai
上次更新 2021-10-14
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。
