使用Visual Studio Macro除錯VSPackage專案
最近在做一個Visual Studio 2008的擴充套件專案,主要是基於VSPackage進行開發,在使用Team Foundation進行原始碼管理時發現如下問題:
解決方案中有一個使用Visual Studio Integration Package嚮導建立出來的專案,該專案調式時通過執行外部應用程式(如:"D:\Develop Tools\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe /ranu /rootsuffix Exp”)啟動Microsoft Visual Studio - Experimental Hive,但是專案組成員Visual Studio 2008的安裝路徑都不相同,在除錯時如果修改外部程式路徑就會簽出該專案檔案,並且由於需要簽出的是專案檔案還不能使用去掉只讀屬性在本地修改的方式。
嘗試在外部程式中使用儲存Visual Studio 2008安裝路徑的環境變數不成功後,又嘗試新增一個控制檯專案然後通過Process.Start()方式啟動一個Visual Studio程式,使用新建程式的問題在於無法自動附加程式進行除錯,最後決定使用Visual Studio Marco通過Visual Studio 2008安裝時設定的VS90COMNTOOLS環境變數獲取安裝目錄,然後通過Process.Start()啟動devenv程式,然後遍歷本地計算機中所有程式找到該程式然後呼叫EnvDTE附加程式。
Macro的實現程式碼如下:
1: Imports System
2: Imports EnvDTE
3: Imports EnvDTE80
4: Imports EnvDTE90
5: Imports System.Diagnostics
6:
7: Public Module VSXDebugger
8:
9: Sub VSXDebugger()
10:
11: Try
12: Dim comnTools As String = Environment.GetEnvironmentVariable("VS90COMNTOOLS")
13:
14: Dim comnDir As String = System.IO.Path.GetDirectoryName(comnTools)
15:
16: Dim idePath As String = System.IO.Path.Combine(comnDir, "..\\IDE\\devenv.exe")
17:
18: idePath = System.IO.Path.GetFullPath(idePath)
19:
20: Dim proc As System.Diagnostics.Process = New System.Diagnostics.Process()
21:
22: proc.StartInfo = New System.Diagnostics.ProcessStartInfo(idePath, "/ranu /rootsuffix Exp")
23:
24: proc.Start()
25:
26: Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
27:
28: Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
29:
30: Dim dbgeng(1) As EnvDTE80.Engine
31:
32: dbgeng(0) = trans.Engines.Item("Managed")
33:
34: Dim procTmp As EnvDTE80.Process2
35: For Each p In dbg2.GetProcesses(trans, Environment.MachineName)
36: procTmp = CType(p, EnvDTE80.Process2)
37: If procTmp.ProcessID = proc.Id Then
38: procTmp.Attach2(dbgeng)
39: Exit For
40: End If
41: Next
42:
43: Catch ex As System.Exception
44:
45: MsgBox(ex.Message)
46:
47: End Try
48:
49: End Sub
50:
51: End Module
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-609715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 Visual Studio 來除錯 dll 檔案除錯
- 【譯】使用 Visual Studio 除錯外部原始碼除錯原始碼
- Visual Studio建立專案提示錯誤
- 如何使用 Visual Studio Code 除錯 Angular Schematics 實現除錯Angular
- 12個Visual Studio除錯效率技巧除錯
- Visual Studio 那些隱藏的除錯功能除錯
- Visual Studio開啟專案時出現“this project is incompatible with the current version of visual studio”錯誤Project
- 【PHP Debug】Visual Studio Code 除錯外掛PHP除錯
- [PHP Debug] Visual Studio Code 除錯外掛PHP除錯
- 如何在Visual Studio中除錯.NET原始碼除錯原始碼
- 使用 Visual Studio 2005 建立新 CUDA 專案
- 使用 vuetron 除錯 mpvue 專案Vue除錯
- Visual Studio Code 配置C、C++ 檔案debug除錯環境C++除錯
- 如何使用Visual Studio Code除錯PHP CLI應用和Web應用除錯PHPWeb
- Visual Studio原生開發的10個除錯技巧除錯
- 利用Visual Studio除錯WSL下的C++工程除錯C++
- 用 Visual Studio 升級 .NET 專案
- Visual Studio的八個除錯建議:像老大哥一樣除錯除錯
- 正確配置 Visual Studio Code 開發和除錯 TypeScript除錯TypeScript
- Visual Studio 除錯技巧之即時視窗的妙用除錯
- Visual Studio原生開發的10個除錯技巧(二)除錯
- Visual Studio原生開發的10個除錯技巧(一)除錯
- Visual Studio自定義除錯窗體兩個小技巧除錯
- Visual Studio容器專案工程化心得
- visual studio2005除錯啟動專案報無法啟動除錯繫結控制程式碼無效的解決技巧除錯
- Visual Studio工具欄中無法選擇除錯裝置除錯
- 在Visual Studio中快速啟動除錯Web應用程式除錯Web
- 如何在Visual Studio中執行和除錯彙編程式碼?除錯
- Vue專案除錯技能Vue除錯
- 除錯python專案除錯Python
- Visual Studio 編譯專案失敗,提示找不到檔案編譯
- 併發程式設計-10.使用 Visual Studio 除錯多執行緒應用程式程式設計除錯執行緒
- 使用 ndb 除錯你的 Node.js 專案除錯Node.js
- 使用Visual Studio分析dump
- visual studio建立專案時需要注意的問題
- Visual Studio 2005 Team System:軟體專案管理專案管理
- 解決Visual Studio 2010/2012在除錯時lock檔案的方法除錯
- 在Visual Studio 中使用git——檔案管理-中(五)Git