Как вывести список проектов на основе конфигурации из класса SolutionFile - PullRequest
0 голосов
/ 27 апреля 2018

Как вы перечисляете все проекты для конкретной конфигурации из класса SolutionFile?

1 Ответ

0 голосов
/ 30 апреля 2018

Мне удалось получить желаемые результаты:

(фрагмент кода ниже был извлечен из ViewModel)

using Microsoft.Build.Construction;
using System.Collections.ObjectModel;

// Step #1 - Instantiate SolutionFile from a solution file name

    vm.SolutionFile = SolutionFile.Parse("SampleSolution.sln");

// Step #2 - Get List of Solution Configurations

    var list = new ObservableCollection<string>();

    foreach (var solutionConfiguration in vm.SolutionFile.SolutionConfigurations)
    {
        list.Add(solutionConfiguration.ConfigurationName + "|" + solutionConfiguration.PlatformName);
    }

    vm.SolutionConfigurations = list;

// Step #3 - Select the desired Configuration 

    vm.Configuration = [select a configuration from vm.SolutionConfigurations]

// Step #4 Get List of Projects based on Configuration

    var list = new ObservableCollection<string>();

    foreach (var project in vm.SolutionFile.ProjectsByGuid)
    {
        foreach (var projectConfiguration in project.Value.ProjectConfigurations)
        {
            if (vm.Configuration.Contains(projectConfiguration.Key.ToString()))
            {
                if (projectConfiguration.Value.IncludeInBuild)
                {
                    list.Add(project.Value.ProjectName);
                    break;
                }
            }
        }
    }

    vm.ProjectsInConfiguration = list;
...