将项添加到宏中的错误列表

时间:2011-03-08 14:42:29

标签: visual-studio macros envdte

我想在执行宏期间出现问题时通知用户宏。我想知道是否可以将项添加到Visual Studio错误列表中?

可以在AddIn(如here)中执行此操作,但我想从宏中执行相同的操作。

修改


为了进一步说明我想要实现的内容,以下是Samples宏库中的示例(Alt + F8 - > Samples - > Utilities - > SaveView())

Sub SaveView()
    Dim name As String

    name = InputBox("Enter the name you want to save as:", "Save window layout")
    If (name = "") Then
        MsgBox("Empty string, enter a valid name.")
    Else
        DTE.WindowConfigurations.Add(name)
    End If
End Sub

我想将错误放入VS错误列表中而不是MsgBox(“...”)警告。

3 个答案:

答案 0 :(得分:2)

您可以从宏中轻松add an item in the Task List。只需使用该文章中的AddTaskToList方法并将m_objDTE更改为DTE。我已经尝试了它并且它有效。

但是,在错误列表中添加项目可能是不可能的。您需要致电VS服务,请参阅how adding an error is done in an add-in。我从这段代码创建了一个宏,它没有用。通常,VS服务在宏中不起作用。我能够成功创建ErrorListProvider。我可以访问它的方法和属性。但是调用ErrorListProvider.Task.Add会导致COM异常。如果你想玩它,几个笔记: 如本文所述,您需要get 4 assemblies out of the GAC,例如到c:\ dlls \目录。由于Macros IDE不允许您在添加引用时进行浏览,因此需要将这些dll复制到... \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PublicAssemblies目录(将10.0更改为VS版本)。然后,当您在宏IDE中添加引用时,您应该看到程序集。

GetService函数始终返回Nothing。将以下字段添加到类中:

Private serviceProvider As IServiceProvider = New Microsoft.VisualStudio.Shell.ServiceProvider(CType(DTE, Microsoft.VisualStudio.OLE.Interop.IServiceProvider))

并在GetService函数中更改行:

objService = Microsoft.VisualStudio.Shell.Package.GetGlobalService(serviceType)

objService = serviceProvider.GetService(serviceType)

正如我写的那样,一切似乎都没问题,但ErrorListProvider.Task.Add失败。

答案 1 :(得分:2)

我认为根据您的情况输出内容到您自己的输出窗格会更合适。错误列表通常用于用户正在处理的项目中的错误,而不是由运行宏引起的错误。特别是当有人说它无法完成时。 :)

输出到您自己的输出窗格非常简单:

DTE.Windows.Item(Constants.vsWindowKindOutput).Activate()
Dim panes As OutputWindowPanes = window.OutputWindowPanes
Dim my_pane As OutputWindowPane
Try
    my_pane = panes.Item("SaveView")
Catch exception As System.ArgumentException
    my_pane = panes.Add("SaveView")
End Try
my_pane.Activate()
my_pane.OutputString("Empty string, enter a valid name." + vbCrLf)

希望这有帮助。

干杯,

Sebastiaan

答案 2 :(得分:0)

这不是你想要的吗?

HOWTO:从Visual Studio加载项

添加导航到错误列表的错误

http://www.mztools.com/articles/2008/MZ2008022.aspx