Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 Visual Studio插件_Visual Studio 2010_Add In - Fatal编程技术网

Visual studio 2010 Visual Studio插件

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中,事件处

我希望创建一个VisualStudio插件,它可以帮助我启动自己的调试过程。我希望保持原始的基于F5的调试完好无损,因此我不希望截获该调用,并且需要一个单独的加载项


任何建议

最简单的方法是使用加载项捕获系统事件/宏。在这些事件中很容易忽略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"