代码之家  ›  专栏  ›  技术社区  ›  Kiquenet user385990

从解决方案sln的所有csproj项目中读取引用列表(以编程方式)

  •  5
  • Kiquenet user385990  · 技术社区  · 14 年前

    我有解决方案sln,它有许多csproj项目。

    有人知道如何通过编程方式读取sln文件VS2008中所有csproj项目的引用列表吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   testalino    14 年前

    csproj文件只是XML文件。您可以使用.NET framework中的XDocument进行此操作。我已经为VS2010做过了,但是在VS2008中标签几乎是一样的。

    例如,对于VS2010,必须验证标记和命名空间:

    XElement projectNode = XElement.Load(fileName);
    XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
    var referenceNodes = projectNode.Descendants(ns + "ItemGroup").Descendants(ns + "Reference")
    

    您可能还需要检查ProjectReference标记。希望有帮助。

        2
  •  1
  •   Oleg Tkachenko    14 年前

    不确定它是否适合您的需要,但一旦将解决方案加载到Visual Studio中,您就可以使用CodeModel API、简单的加载项甚至宏轻松地检查它:

    Imports EnvDTE
    Imports VSLangProj
    
    Public Module Module1
        Public Sub ShowAllReferences()
            Dim sol As Solution = DTE.Solution
            For i As Integer = 1 To sol.Projects.Count
                Dim proj As Project = sol.Projects.Item(i)
                Dim vsProj As VSProject = DirectCast(proj.Object, VSProject)
    
                For Each reference As Reference In vsProj.References
                    MsgBox(reference.Description)
                Next
            Next
        End Sub
    
    End Module