2017-06-24

關於 Visual Studio 中的外部工具(External Tools)

TDD 第三天課程中,有個重點是使用 Pickles 與 SpecFlow 來產生測試及說明文件,做法就是透過 Visual Studio 來執行外部工具,因為之前沒有使用過 Visual Studio 外部工具的 經驗加上練習時發現有些眉眉角角要注意,順手筆記一下


預設內建工具

  • Visual Studio 2015 及之前版本
    1. Create GUID

      產生 GUID

    2. Error Lookup

      從輸入的值取得錯誤訊息

    3. PreEmptive Dotfuscator and Analytics >保護 .NET 程式免於反向工程
    4. SPY++ 及 SPY++ x64

      以圖形化方式顯示處理序、執行緒、視窗及視窗訊息

    5. WCF Service Configuration Editor

      可用以建立及修改 WCF 服務的組態設定

    1vs2015tools

  • Visual Studio 2017
    • WCF Service Configuration Editor

      可用以建立及修改 WCF 服務的組態設定

    2vs2017tools

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

      3excludeguid

自訂執行工具

  1. Visual Studio 主選單 Tools --> External Tools...

    4addtools

  2. 填寫自訂工具

    5addtools2

    • Title

      顯示在選單上的名稱

      5title

    • Command

      執行檔案的位置,支援執行檔格式請參照下一節說明

    • Arguments

      執行時需要參數,選擇的參數說明請參照下方章節

    • Initial directory

      指定執行起始資料夾

    • Use Output windows

      • .exe 不支援這個選項

        5-2exenosupport

      • Close on exit 互斥,無法同時使用
      • 將結果輸出於 Visual Studio Output 視窗中

        5output

    • Prompt for arguments

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

      5-3args

    • Treat output as Unicode

      • 將指令執行結果 output 使用 Unicode 編碼
      • 需搭配 Use Output windows 使用
      • .exe 不支援這個選項

        5-3exenosupport

    • Close on exit

      • 執行結束後關閉
      • Use Output windows 互斥,無法同時使用
      • .exe 不支援這個選項

        5-4exenosupport

支援執行格式

  1. .exe
  2. .com
  3. .pif
  4. .bat
  5. .cmd

6format

參數

參數 說明 範例
$(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

心得

參數不少,光看說明可能不太好理解用途,我的做法是一一將參數輸出來比對,下面提供個人做法

  • 方法一:使用指令輸出
    1. 新增一個 .bat 檔
    2. echo 參數
      • %1...%9 分別代表第一個參數...直到第九個參數
      • %0 代表執行檔位置(ex:c:\test.bat)
      • %* 所有參數
    3. 搭配 Use Output windows

    7echooutput

  • 方法二:使用 Prompt for arguments
    1. 指定隨意執行檔
    2. 勾選 Prompt for arguments
    3. 執行自訂工具時選擇參數即會輸出對應指令及參數

    8argoutput

  • 另外有個小地方提醒一下:參數之間需要用空白符號隔開,否則將會被當做同個參數,會讓實際行為與預期有落差

參考資訊

  1. 管理外部工具
  2. Using parameters in batch files at DOS command line

沒有留言:

張貼留言