快速输入Visual Studio调试的命令行参数?

时间:2011-03-28 14:14:46

标签: c++ visual-studio visual-studio-2010 debugging

我想更改命令行参数,然后调试我的可执行文件。

使用默认的Visual Studio UI,这会让我采取一些曲折的鼠标和键盘操作:

  

项目...右键单击...配置属性...调试...命令参数... 键入args ... ENTER ... F5

有没有办法让这个常见操作像其他常见操作一样简单,例如,搜索所有文件的模式:

  

CNTL + SHIFT + F ... 类型搜索模式 ... ENTER

例如,有没有办法创建自定义编辑框以允许快速访问调试命令行参数?或者让键绑定弹出一个简单的“调试对话框”,可以输入args并直接调试? e.g。

  

ALT + F5 ... type args ... ENTER

我正在使用C ++和Visual Studio 2010 Express。谢谢!

3 个答案:

答案 0 :(得分:11)

扩展程序CLIArgsMadeEasy 2010/2012是一个很棒的小东西,它将项目的调试会话的命令行参数放在visual studio工具栏上的一个小文本框中,IMO,它比使用宏更容易,也更乏味。

链接
http://visualstudiogallery.msdn.microsoft.com/8159cd7d-2c81-47f3-9794-a347ec1fba09?SRC=VSIDE

您可以在扩展程序管理器中的搜索框中输入CLIArgsMadeEasy,它会在库中相当快地找到它,如果您需要知道的话,我会如何安装它。希望这有帮助!

答案 1 :(得分:8)

下面的宏应该会有所帮助。打开"工具 - >宏 - >宏浏览器",然后创建新模块,编辑它,并在下面复制粘贴代码。必需的命令是SetCommandArgsProperty。用户界面不好,但它有效(VS 2005,我希望这也适用于VS 2010)。然后添加您喜欢的任何快捷方式来运行此宏。

以下是一些细节:

  • 查找启动项目
  • 选择活动配置并查找名称为" CommandArguments"
  • 的属性
  • 创建包含当前值的编辑框
  • 如果选择“确定”,则更新属性

    Sub SetCommandArgsProperty()
        Dim newVal As Object
        newVal = InputValue(GetCommandArgsPropertyValue())
        If TypeOf newVal Is String Then
            SetCommandArgsProperty(newVal)
        End If
    End Sub
    
    Function InputValue(ByVal defaultText As String)
        Dim frm As New System.Windows.Forms.Form
        Dim btn As New System.Windows.Forms.Button
        Dim edit As New System.Windows.Forms.TextBox
    
        edit.Text = defaultText
        edit.Width = 100
    
        btn.Text = "OK"
        btn.DialogResult = System.Windows.Forms.DialogResult.OK
    
        frm.Text = "Input command line properties"
    
        frm.Controls.Add(btn)
        btn.Dock = System.Windows.Forms.DockStyle.Bottom
    
        frm.Controls.Add(edit)
        edit.Dock = System.Windows.Forms.DockStyle.Top
    
        frm.Height = 80
        frm.Width = 300
    
        If frm.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            Return edit.Text
        End If
        Return System.DBNull.Value
    End Function
    
    Function GetCommandArgsProperty() As EnvDTE.Property
        Dim solution As Solution
        Dim project As Project
        Dim sb As SolutionBuild
        Dim str As String
        Dim cm As ConfigurationManager
        Dim config As Configuration
        Dim properties As Properties
        Dim prop As EnvDTE.Property
    
        solution = DTE.Solution
        sb = solution.SolutionBuild
        For Each str In sb.StartupProjects
            project = solution.Item(str)
            cm = project.ConfigurationManager
            config = cm.ActiveConfiguration
            properties = config.Properties
            For Each prop In properties
                If prop.Name = "CommandArguments" Then
                    Return prop
                End If
            Next
        Next
    End Function
    
    Function GetCommandArgsPropertyValue()
        Return GetCommandArgsProperty().Value
    End Function
    
    Sub SetCommandArgsProperty(ByVal value As String)
        GetCommandArgsProperty().Value = value
    End Sub
    

答案 2 :(得分:4)

至少在Visual Studio 2012中,您可以使用Alt+F7快捷方式直接访问项目属性。

此外,打开的属性页通常会记住上次打开的项目,即Configuration Properties -> Debugging