5

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

有人知道以编程方式读取 sln 文件的 VS2008 中所有 csproj 项目的参考列表的方法吗?

4

2 回答 2

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 标记。希望有帮助。

于 2010-09-24T12:49:19.730 回答
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
于 2010-09-28T04:45:41.890 回答