获取解决方案文件sln中所有的项目文件路径。
进行每日编译架构需要,读取sln文件,包含的项目路径。写了一个简单的函数。只是针对vb.net的解决方案,vs2003版本:
Function GetProjectPaths(ByVal sln As String) As System.Collections.Specialized.StringCollection
If sln Is Nothing Then
Throw New ArgumentNullException("没有指定解决方案。")
End If
If Not IO.File.Exists(sln) Then
Throw New IO.FileNotFoundException(String.Format("解决方案 {0} 不存在。", sln))
End If
Dim file As String = sln
Dim r As IO.StreamReader
Dim sc As New System.Collections.Specialized.StringCollection
Try
r = New IO.StreamReader(file, System.Text.Encoding.Default)
Dim line As String = r.ReadLine
While Not line Is Nothing
If line.StartsWith("Project(") Then
Dim strSplit As String = """, """
Dim starIndex As Integer = line.IndexOf(strSplit)
If starIndex <> -1 Then
Dim projectPath As String = line.Substring(starIndex + 4)
Dim endIndex As Integer = projectPath.IndexOf(strSplit)
'项目路径
projectPath = projectPath.Substring(0, endIndex)
Dim slnPath As String = IO.Path.GetDirectoryName(file)
IO.Directory.SetCurrentDirectory(slnPath) '解决方案中存在的相对路径,偷懒做法。
projectPath = IO.Path.GetFullPath(projectPath)
sc.Add(projectPath)
End If
End If
line = r.ReadLine
End While
Catch ex As Exception
Throw New System.Exception("获取项目文件路径发生错误。", ex)
Finally
If Not r Is Nothing Then
r.Close()
End If
End Try
Return sc
End Function