private static void AddPackageTargetFallbacks(PackageSpec spec, IEnumerable <IMSBuildItem> items) { foreach (var item in GetItemByType(items, "TargetFrameworkInformation")) { var frameworkString = item.GetProperty("TargetFramework"); var frameworks = new List <TargetFrameworkInformation>(); if (!string.IsNullOrEmpty(frameworkString)) { frameworks.Add(spec.GetTargetFramework(NuGetFramework.Parse(frameworkString))); } else { frameworks.AddRange(spec.TargetFrameworks); } foreach (var targetFrameworkInfo in frameworks) { var packageTargetFallback = MSBuildStringUtility.Split(item.GetProperty("PackageTargetFallback")) .Select(NuGetFramework.Parse) .ToList(); var assetTargetFallback = MSBuildStringUtility.Split(item.GetProperty(AssetTargetFallbackUtility.AssetTargetFallback)) .Select(NuGetFramework.Parse) .ToList(); // Throw if an invalid combination was used. AssetTargetFallbackUtility.EnsureValidFallback(packageTargetFallback, assetTargetFallback, spec.FilePath); // Update the framework appropriately AssetTargetFallbackUtility.ApplyFramework(targetFrameworkInfo, packageTargetFallback, assetTargetFallback); } } }
private static IEnumerable <TargetFrameworkInformation> GetTargetFrameworkInformation(string filePath, ProjectStyle restoreType, IEnumerable <IMSBuildItem> items) { var uniqueIds = new HashSet <string>(); foreach (var item in GetItemByType(items, "TargetFrameworkInformation")) { var frameworkString = item.GetProperty("TargetFramework"); var targetFrameworkMoniker = item.GetProperty("TargetFrameworkMoniker"); var targetPlatforMoniker = item.GetProperty("TargetPlatformMoniker"); var targetPlatformMinVersion = item.GetProperty("TargetPlatformMinVersion"); var clrSupport = item.GetProperty("CLRSupport"); var targetAlias = string.IsNullOrEmpty(frameworkString) ? string.Empty : frameworkString; if (uniqueIds.Contains(targetAlias)) { continue; } uniqueIds.Add(targetAlias); NuGetFramework targetFramework = MSBuildProjectFrameworkUtility.GetProjectFramework( projectFilePath: filePath, targetFrameworkMoniker: targetFrameworkMoniker, targetPlatformMoniker: targetPlatforMoniker, targetPlatformMinVersion: targetPlatformMinVersion, clrSupport: clrSupport); var targetFrameworkInfo = new TargetFrameworkInformation() { FrameworkName = targetFramework, TargetAlias = targetAlias }; if (restoreType == ProjectStyle.PackageReference || restoreType == ProjectStyle.Standalone || restoreType == ProjectStyle.DotnetToolReference) { var packageTargetFallback = MSBuildStringUtility.Split(item.GetProperty("PackageTargetFallback")) .Select(NuGetFramework.Parse) .ToList(); var assetTargetFallback = MSBuildStringUtility.Split(item.GetProperty(AssetTargetFallbackUtility.AssetTargetFallback)) .Select(NuGetFramework.Parse) .ToList(); // Throw if an invalid combination was used. AssetTargetFallbackUtility.EnsureValidFallback(packageTargetFallback, assetTargetFallback, filePath); // Update the framework appropriately AssetTargetFallbackUtility.ApplyFramework(targetFrameworkInfo, packageTargetFallback, assetTargetFallback); targetFrameworkInfo.RuntimeIdentifierGraphPath = item.GetProperty("RuntimeIdentifierGraphPath"); } yield return(targetFrameworkInfo); } }