文章目錄
關於 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 台灣 授權條款 釋出。