Visual studio 2010 Visual Studio插件
我希望创建一个VisualStudio插件,它可以帮助我启动自己的调试过程。我希望保持原始的基于F5的调试完好无损,因此我不希望截获该调用,并且需要一个单独的加载项Visual studio 2010 Visual Studio插件,visual-studio-2010,add-in,Visual Studio 2010,Add In,我希望创建一个VisualStudio插件,它可以帮助我启动自己的调试过程。我希望保持原始的基于F5的调试完好无损,因此我不希望截获该调用,并且需要一个单独的加载项 任何建议最简单的方法是使用加载项捕获系统事件/宏。在这些事件中很容易忽略vs所做的事情。使用标准visual studio命令(如F5)时,会自动激发所有事件。这包括所有标准visual studio快捷键、菜单和工具栏按钮 创建一个新的vs加载项项目,它将自动添加代码以附加OnBeforeCommandEvent。在vb中,事件处
任何建议最简单的方法是使用加载项捕获系统事件/宏。在这些事件中很容易忽略vs所做的事情。使用标准visual studio命令(如F5)时,会自动激发所有事件。这包括所有标准visual studio快捷键、菜单和工具栏按钮 创建一个新的vs加载项项目,它将自动添加代码以附加OnBeforeCommandEvent。在vb中,事件处理程序看起来像下面的代码
Friend Sub OnBeforeCommandEvent(sGuid As String, ID As Integer, CustomIn As Object, CustomOut As Object, ByRef CancelDefault As Boolean)
事件将向您传递sGuid和ID。您可以将这两项解析为宏字符串名称(sCommandName),如下所示:-
Dim objCommand As EnvDTE.Command
Try
objCommand = _applicationObject.Commands.Item(sGuid, ID)
Catch ex As Exception
'unknown guids can be ignored
Exit Sub
End Try
If objCommand Is Nothing Then Exit Sub
Dim sCommandName As String
sCommandName = objCommand.Name
注意:加载项启动时,\u applicationObject
将传递给您的代码。新的加载项项目将自动为OnConnection
事件包含以下代码,第一个参数是上面显示的\u applicationObject
OnConnection(ByVal application As Object
拥有sCommandName
变量后,它将包含Visual Studio宏的名称,例如Debug.Start
要覆盖Debug.Start
函数,您需要添加一些自己的代码,并记住在退出处理程序之前将CancelDefault
设置为True
当您将CancelDefault
设置为true时,Visual Studio将不会运行标准宏,这意味着您可以在按下F5时运行自己的调试器
这些是生成过程中使用的Visual Studio宏名称。您可以覆盖任意多个或任意少个。我已经将它们分组到相关功能中,但您可以以任何组合处理它们
Select Case sCommandName
Case "Debug.Start", _
"Debug.StartWithoutDebugging"
System.Windows.Forms.MessageBox.Show("You clicked F5, we are overriding the debug process")
CancelDefault=true
Exit Sub
Case "ClassViewContextMenus.ClassViewProject.Rebuild", _
"ClassViewContextMenus.ClassViewProject.Build", _
"Build.RebuildOnlyProject", _
"Build.RebuildSelection", _
"Build.BuildOnlyProject", _
"Build.BuildSelection"
Case "Build.RebuildSolution", _
"Build.BuildSolution"
Case "ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance", _
"ClassViewContextMenus.ClassViewProject.Debug.StepIntonewinstance"
Case "Build.CleanSelection", _
"Build.CleanSolution", _
"ClassViewContextMenus.ClassViewProject.Clean"
Case "Build.SolutionConfigurations"
最简单的方法是使用加载项捕获系统事件/宏。在这些事件中很容易忽略vs所做的事情。使用标准visual studio命令(如F5)时,会自动激发所有事件。这包括所有标准visual studio快捷键、菜单和工具栏按钮 创建一个新的vs加载项项目,它将自动添加代码以附加OnBeforeCommandEvent。在vb中,事件处理程序看起来像下面的代码
Friend Sub OnBeforeCommandEvent(sGuid As String, ID As Integer, CustomIn As Object, CustomOut As Object, ByRef CancelDefault As Boolean)
事件将向您传递sGuid和ID。您可以将这两项解析为宏字符串名称(sCommandName),如下所示:-
Dim objCommand As EnvDTE.Command
Try
objCommand = _applicationObject.Commands.Item(sGuid, ID)
Catch ex As Exception
'unknown guids can be ignored
Exit Sub
End Try
If objCommand Is Nothing Then Exit Sub
Dim sCommandName As String
sCommandName = objCommand.Name
注意:加载项启动时,\u applicationObject
将传递给您的代码。新的加载项项目将自动为OnConnection
事件包含以下代码,第一个参数是上面显示的\u applicationObject
OnConnection(ByVal application As Object
拥有sCommandName
变量后,它将包含Visual Studio宏的名称,例如Debug.Start
要覆盖Debug.Start
函数,您需要添加一些自己的代码,并记住在退出处理程序之前将CancelDefault
设置为True
当您将CancelDefault
设置为true时,Visual Studio将不会运行标准宏,这意味着您可以在按下F5时运行自己的调试器
这些是生成过程中使用的Visual Studio宏名称。您可以覆盖任意多个或任意少个。我已经将它们分组到相关功能中,但您可以以任何组合处理它们
Select Case sCommandName
Case "Debug.Start", _
"Debug.StartWithoutDebugging"
System.Windows.Forms.MessageBox.Show("You clicked F5, we are overriding the debug process")
CancelDefault=true
Exit Sub
Case "ClassViewContextMenus.ClassViewProject.Rebuild", _
"ClassViewContextMenus.ClassViewProject.Build", _
"Build.RebuildOnlyProject", _
"Build.RebuildSelection", _
"Build.BuildOnlyProject", _
"Build.BuildSelection"
Case "Build.RebuildSolution", _
"Build.BuildSolution"
Case "ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance", _
"ClassViewContextMenus.ClassViewProject.Debug.StepIntonewinstance"
Case "Build.CleanSelection", _
"Build.CleanSolution", _
"ClassViewContextMenus.ClassViewProject.Clean"
Case "Build.SolutionConfigurations"