編集:同じVSMacrosプロジェクトで新しいモジュールを作成することで問題は解決しました。Visual Studio 2008マクロは、マクロエクスプローラでのみ動作し、マクロエクスプローラでは動作しません。
次のマクロは、Visual StudioからマクロIDEを開いてそこからマクロを実行した場合にのみ機能します。
Visual Studioインスタンスのマクロエクスプローラからマクロを右クリックするだけでもっと便利です。
明らかに間違っている必要がありますが、前にVSマクロで作業したことはありません。どちらの場合でもMessageBoxは表示されません。
Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Security.Principal
Imports System.Windows.Forms
Public Module AttachToSdtProcess
Sub AttachToSdtProcess()
Try
'If MessageBox.Show("Attach to SDT.exe", "Caption", _
' MessageBoxButtons.OKCancel) = DialogResult.Cancel Then
'Return
'End If
Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
Dim compName As String = WindowsIdentity.GetCurrent().Name
compName = compName.Substring(0, compName.IndexOf("\"))
Dim proc2 As EnvDTE80.Process2 = _
dbg2.GetProcesses(trans, compName).Item("TheExecutable.exe")
If proc2 Is Nothing Then
MessageBox.Show("Could not find TheExecutable.exe")
End If
proc2.Attach2(dbgeng)
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
End Sub
End Module
実際、同じVSMacrosプロジェクトで新しいモジュールを作成することで問題は解決しました。私の日を救った!それは、以下に「正しい」と記された「解決策」とは関係がありませんでした。 – Jens
VSMacrosの代わりにVisual Studio 2010を使用している場合は、この奇妙な問題を解決するために "Samples"で新しいモジュールを作成する必要があります。 – Durden81