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

时间:2010-09-24 12:39:22

标签: .net scripting reference projects-and-solutions csproj

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

任何人都知道一种方法以编程方式读取sln文件的VS2008中所有csproj项目的引用列表?

2 个答案:

答案 0 :(得分:3)

csproj文件只是XML文件。您可以使用.NET框架中的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标记。希望有所帮助。

答案 1 :(得分:1)

不确定它是否符合您的需求,但是一旦将解决方案加载到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