Exemplo n.º 1
0
        public ProjectRestoreInfoBuilder WithTargetFrameworkInfo(
            IVsTargetFrameworkInfo tfi)
        {
            (_pri.TargetFrameworks as VsTargetFrameworks).Add(tfi);

            return(this);
        }
Exemplo n.º 2
0
        private static TargetFrameworkInformation ToTargetFrameworkInformation(
            IVsTargetFrameworkInfo targetFrameworkInfo)
        {
            var tfi = new TargetFrameworkInformation
            {
                FrameworkName = NuGetFramework.Parse(targetFrameworkInfo.TargetFrameworkMoniker)
            };

            var ptf = MSBuildStringUtility.Split(GetPropertyValueOrNull(targetFrameworkInfo.Properties, PackageTargetFallback))
                      .Select(NuGetFramework.Parse)
                      .ToList();

            var atf = MSBuildStringUtility.Split(GetPropertyValueOrNull(targetFrameworkInfo.Properties, AssetTargetFallback))
                      .Select(NuGetFramework.Parse)
                      .ToList();

            // Update TFI with fallback properties
            AssetTargetFallbackUtility.ApplyFramework(tfi, ptf, atf);

            if (targetFrameworkInfo.PackageReferences != null)
            {
                tfi.Dependencies.AddRange(
                    targetFrameworkInfo.PackageReferences
                    .Cast <IVsReferenceItem>()
                    .Select(ToPackageLibraryDependency));
            }

            return(tfi);
        }
        private static TargetFrameworkInformation ToTargetFrameworkInformation(
            IVsTargetFrameworkInfo targetFrameworkInfo)
        {
            var tfi = new TargetFrameworkInformation
            {
                FrameworkName = NuGetFramework.Parse(targetFrameworkInfo.TargetFrameworkMoniker)
            };

            var ptf = GetPropertyValueOrNull(targetFrameworkInfo.Properties, PackageTargetFallback);

            if (!string.IsNullOrEmpty(ptf))
            {
                var fallbackList = MSBuildStringUtility.Split(ptf)
                                   .Select(NuGetFramework.Parse)
                                   .ToList();

                tfi.Imports = fallbackList;

                // Update the PackageSpec framework to include fallback frameworks
                if (tfi.Imports.Count != 0)
                {
                    tfi.FrameworkName = new FallbackFramework(tfi.FrameworkName, fallbackList);
                }
            }

            if (targetFrameworkInfo.PackageReferences != null)
            {
                tfi.Dependencies.AddRange(
                    targetFrameworkInfo.PackageReferences
                    .Cast <IVsReferenceItem>()
                    .Select(ToPackageLibraryDependency));
            }

            return(tfi);
        }
Exemplo n.º 4
0
        private static void LogTargetFramework(IProjectLoggerBatch logger, IVsTargetFrameworkInfo targetFrameworkInfo)
        {
            logger.WriteLine(targetFrameworkInfo.TargetFrameworkMoniker);
            logger.IndentLevel++;

            LogReferenceItems(logger, "Project References", targetFrameworkInfo.ProjectReferences);
            LogReferenceItems(logger, "Package References", targetFrameworkInfo.PackageReferences);
            LogProperties(logger, "Target Framework Properties", targetFrameworkInfo.Properties);

            logger.IndentLevel--;
        }
Exemplo n.º 5
0
        public ProjectRestoreInfoBuilder WithTargetFrameworkInfo(
            IVsTargetFrameworkInfo tfi)
        {
            if (_projectRestoreInfo.TargetFrameworks is VsTargetFrameworks vsTargetFrameworks && tfi is VsTargetFrameworkInfo)
            {
                vsTargetFrameworks.Add(tfi);
            }

            if (_projectRestoreInfo2.TargetFrameworks is VsTargetFrameworks2 vsTargetFrameworks2 && tfi is VsTargetFrameworkInfo2)
            {
                vsTargetFrameworks2.Add((IVsTargetFrameworkInfo2)tfi);
            }

            return(this);
        }
Exemplo n.º 6
0
        internal static TargetFrameworkInformation ToTargetFrameworkInformation(
            IVsTargetFrameworkInfo targetFrameworkInfo)
        {
            var tfi = new TargetFrameworkInformation
            {
                FrameworkName = NuGetFramework.Parse(targetFrameworkInfo.TargetFrameworkMoniker)
            };

            var ptf = MSBuildStringUtility.Split(GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.PackageTargetFallback))
                      .Select(NuGetFramework.Parse)
                      .ToList();

            var atf = MSBuildStringUtility.Split(GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.AssetTargetFallback))
                      .Select(NuGetFramework.Parse)
                      .ToList();

            // Update TFI with fallback properties
            AssetTargetFallbackUtility.ApplyFramework(tfi, ptf, atf);


            tfi.RuntimeIdentifierGraphPath = GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.RuntimeIdentifierGraphPath);

            if (targetFrameworkInfo.PackageReferences != null)
            {
                tfi.Dependencies.AddRange(
                    targetFrameworkInfo.PackageReferences
                    .Cast <IVsReferenceItem>()
                    .Select(ToPackageLibraryDependency));
            }

            if (targetFrameworkInfo is IVsTargetFrameworkInfo2 targetFrameworkInfo2)
            {
                if (targetFrameworkInfo2.PackageDownloads != null)
                {
                    tfi.DownloadDependencies.AddRange(
                        targetFrameworkInfo2.PackageDownloads
                        .Cast <IVsReferenceItem>()
                        .Select(ToPackageDownloadDependency));
                }

                if (targetFrameworkInfo2.FrameworkReferences != null)
                {
                    PopulateFrameworkDependencies(tfi, targetFrameworkInfo2);
                }
            }

            return(tfi);
        }
Exemplo n.º 7
0
        private IVsTargetFrameworks GetAllTargetFrameworks(IEnumerable <ProjectRestoreUpdate> updates)
        {
            var frameworks = new List <IVsTargetFrameworkInfo>();

            foreach (ProjectRestoreUpdate update in updates)
            {
                Assumes.True(update.RestoreInfo.TargetFrameworks.Count == 1);

                IVsTargetFrameworkInfo framework = update.RestoreInfo.TargetFrameworks.Item(0);

                if (ValidateTargetFramework(update.ProjectConfiguration, framework))
                {
                    frameworks.Add(framework);
                }
            }

            return(new TargetFrameworks(frameworks));
        }
Exemplo n.º 8
0
        private static ProjectRestoreMetadataFrameworkInfo ToProjectRestoreMetadataFrameworkInfo(
            IVsTargetFrameworkInfo targetFrameworkInfo,
            string projectDirectory)
        {
            var tfi = new ProjectRestoreMetadataFrameworkInfo
            {
                FrameworkName = NuGetFramework.Parse(targetFrameworkInfo.TargetFrameworkMoniker)
            };

            if (targetFrameworkInfo.ProjectReferences != null)
            {
                tfi.ProjectReferences.AddRange(
                    targetFrameworkInfo.ProjectReferences
                    .Cast <IVsReferenceItem>()
                    .Select(item => ToProjectRestoreReference(item, projectDirectory)));
            }

            return(tfi);
        }
Exemplo n.º 9
0
        internal static ProjectRestoreMetadataFrameworkInfo ToProjectRestoreMetadataFrameworkInfo(
            IVsTargetFrameworkInfo targetFrameworkInfo,
            string projectDirectory,
            string projectFullPath)
        {
            var tfi = new ProjectRestoreMetadataFrameworkInfo
            {
                FrameworkName = GetTargetFramework(targetFrameworkInfo.Properties, projectFullPath),
                TargetAlias   = GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.TargetFramework)
            };

            if (targetFrameworkInfo.ProjectReferences != null)
            {
                tfi.ProjectReferences.AddRange(
                    targetFrameworkInfo.ProjectReferences
                    .Cast <IVsReferenceItem>()
                    .Where(IsReferenceOutputAssemblyTrueOrEmpty)
                    .Select(item => ToProjectRestoreReference(item, projectDirectory)));
            }

            return(tfi);
        }
Exemplo n.º 10
0
        internal static TargetFrameworkInformation ToTargetFrameworkInformation(
            IVsTargetFrameworkInfo targetFrameworkInfo, bool cpvmEnabled, string projectFullPath)
        {
            var tfi = new TargetFrameworkInformation
            {
                FrameworkName = GetTargetFramework(targetFrameworkInfo.Properties, projectFullPath),
                TargetAlias   = GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.TargetFramework)
            };

            var ptf = MSBuildStringUtility.Split(GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.PackageTargetFallback))
                      .Select(NuGetFramework.Parse)
                      .ToList();

            var atf = MSBuildStringUtility.Split(GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.AssetTargetFallback))
                      .Select(NuGetFramework.Parse)
                      .ToList();

            // Update TFI with fallback properties
            AssetTargetFallbackUtility.ApplyFramework(tfi, ptf, atf);


            tfi.RuntimeIdentifierGraphPath = GetPropertyValueOrNull(targetFrameworkInfo.Properties, ProjectBuildProperties.RuntimeIdentifierGraphPath);

            if (targetFrameworkInfo.PackageReferences != null)
            {
                tfi.Dependencies.AddRange(
                    targetFrameworkInfo.PackageReferences
                    .Cast <IVsReferenceItem>()
                    .Select(pr => ToPackageLibraryDependency(pr, cpvmEnabled)));
            }

            if (targetFrameworkInfo is IVsTargetFrameworkInfo2 targetFrameworkInfo2)
            {
                if (targetFrameworkInfo2.PackageDownloads != null)
                {
                    tfi.DownloadDependencies.AddRange(
                        targetFrameworkInfo2.PackageDownloads
                        .Cast <IVsReferenceItem>()
                        .Select(ToPackageDownloadDependency));
                }

                if (cpvmEnabled && targetFrameworkInfo is IVsTargetFrameworkInfo3 targetFrameworkInfo3)
                {
                    if (targetFrameworkInfo3.CentralPackageVersions != null)
                    {
                        tfi.CentralPackageVersions.AddRange(
                            targetFrameworkInfo3.CentralPackageVersions
                            .Cast <IVsReferenceItem>()
                            .Select(ToCentralPackageVersion)
                            .Distinct(CentralPackageVersionNameComparer.Default)
                            .ToDictionary(cpv => cpv.Name));
                    }
                }

                if (targetFrameworkInfo2.FrameworkReferences != null)
                {
                    PopulateFrameworkDependencies(tfi, targetFrameworkInfo2);
                }
            }

            return(tfi);
        }
Exemplo n.º 11
0
        private bool ValidateTargetFramework(ProjectConfiguration projectConfiguration, IVsTargetFrameworkInfo framework)
        {
            if (framework.TargetFrameworkMoniker.Length == 0)
            {
                ReportDataSourceUserFault(
                    new Exception(string.Format(CultureInfo.CurrentCulture, VSResources.Restore_EmptyTargetFrameworkMoniker, projectConfiguration.Name)),
                    ProjectFaultSeverity.LimitedFunctionality,
                    ContainingProject);

                return(false);
            }

            return(true);
        }