|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
#nullable disable
using Microsoft.Build.Evaluation;
using NuGet.Frameworks;
namespace Microsoft.DotNet.Cli.Extensions;
internal static class ProjectExtensions
{
public static IEnumerable<string> GetRuntimeIdentifiers(this Project project)
{
return project
.GetPropertyCommaSeparatedValues("RuntimeIdentifier")
.Concat(project.GetPropertyCommaSeparatedValues("RuntimeIdentifiers"))
.Select(value => value.ToLower())
.Distinct();
}
public static IEnumerable<NuGetFramework> GetTargetFrameworks(this Project project)
{
var targetFrameworksStrings = project
.GetPropertyCommaSeparatedValues("TargetFramework")
.Union(project.GetPropertyCommaSeparatedValues("TargetFrameworks"))
.Select((value) => value.ToLower());
var uniqueTargetFrameworkStrings = new HashSet<string>(targetFrameworksStrings);
return uniqueTargetFrameworkStrings
.Select((frameworkString) => NuGetFramework.Parse(frameworkString));
}
public static IEnumerable<string> GetConfigurations(this Project project)
{
return project.GetPropertyCommaSeparatedValues("Configurations");
}
public static IEnumerable<string> GetPropertyCommaSeparatedValues(this Project project, string propertyName)
{
return project.GetPropertyValue(propertyName)
.Split(';')
.Select((value) => value.Trim())
.Where((value) => !string.IsNullOrEmpty(value));
}
}
|