使用DTE Visual Basic解析解决方案

时间:2015-07-28 12:09:45

标签: vb.net vba envdte

我必须解析我的解决方案以列出它正在使用的所有文件。

我创造了这个:

Imports EnvDTE
Imports EnvDTE80
Imports Microsoft.VisualBasic
Imports System.Collections
Public Class C
    Implements VisualCommanderExt.ICommand

    Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run
        listing(DTE)
    End Sub
    Sub listing(DTE As EnvDTE80.DTE2)
        Dim prj As Project
        Dim prjs As Projects

        prjs = DTE.Solution.Projects
        For Each prj In prjs
            Dim item As String
            Dim itemEnum as IEnumerator = prj.GetEnumerator()
            itemEnum.Reset()
            While itemEnum.MoveNext()
                item = itemEnum.Current().FullName
                My.Computer.FileSystem.WriteAllText("C:\tmp\list.txt", item, True)
            End While
        Next
    End Sub

End Class

不幸的是我遇到了例外:

  

System.Runtime.InteropServices.COMExcption(0x80020003):找不到会员....

我的解决方案有10个项目。

1 个答案:

答案 0 :(得分:0)

导航项目和文件是递归的,因为它们可以嵌套。 看我的文章:

HOWTO:从Visual Studio .NET宏或加载项中导航解决方案的文件。

HOWTO:使用加载项中的IVsHierarchy界面导航解决方案的文件。

http://www.visualstudioextensibility.com/articles/add-ins/