使用 Microsoft.Build 命名空间从 Visual Studio .sln 文件获取项目列表

Get list of projects from Visual Studio .sln file using Microsoft.Build namespace

我想出了如何使用 Microsoft.Build 命名空间加载 .csproj 文件并提取几个属性:

var projectCollection = new ProjectCollection();
projectCollection.LoadProject(@"C:\path\to\my.csproj");
string assemblyName = projectCollection.LoadedProjects.First().GetPropertyValue("AssemblyName");
string outputPath = projectCollection.LoadedProjects.First().GetPropertyValue("OutputPath");

现在如何使用 Microsoft.Build 加载 .sln 文件并获取 .csproj 文件列表?

对于解析解决方案文件,您可以使用 SolutionFile class:

var solutionFile = SolutionFile.Parse(@"SOLUTION_PATH.sln");
var projectNames = solutionFile.ProjectsInOrder.Select(p => p.ProjectName).ToList();