2010-09-24 60 views
4

我有解决方案SLN的所有的csproj项目,有很多的csproj项目引用的列表。阅读从溶液SLN(编程)

人知道一种以编程方式读取SLN文件的所有VS2008项目的csproj的产品编号列表?

回答

2

的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标签想检查。希望有所帮助。

+0

很大,另外请参照:http ://stackoverflow.com/questions/1191151/reading-the-list-of-references-from-csproj-files;以及如何知道解决方案sln的csproj文件项目?任何API,SDK,脚本代码?任何示例代码? – Kiquenet 2010-09-24 15:55:14

+1

解决方案文件不是xml,因此您无法使用所描述的方法解析它。你可以在使用正则表达式时轻松解析项目的sln文件,因此你不需要API。尽管这是一个不同的问题(你可以在这里问),请接受我对你原来的问题的回答,如果它帮助你。 – testalino 2010-09-27 06:48:36

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 
+0

我可以在Team Foundation Server中共享VS2008的自定义宏吗?我的公司有很多与TFS合作的开发人员。 – Kiquenet 2010-09-28 17:55:17