Exemple #1
0
        /// <summary>
        /// Creates project restore info object to be consumed by <see cref="IVsSolutionRestoreService"/>.
        /// </summary>
        /// <param name="packageSpec">Source project restore object</param>
        /// <returns>Desired project restore object</returns>
        public static ProjectRestoreInfoBuilder FromPackageSpec(
            PackageSpec packageSpec,
            string baseIntermediatePath,
            bool crossTargeting)
        {
            if (packageSpec == null)
            {
                throw new ArgumentNullException(nameof(packageSpec));
            }

            if (packageSpec.TargetFrameworks == null)
            {
                return(null);
            }

            var projectProperties = new VsProjectProperties {
            };

            if (packageSpec.Version != null)
            {
                projectProperties = new VsProjectProperties
                {
                    { "PackageVersion", packageSpec.Version.ToString() }
                };
            }

            var targetFrameworks = new VsTargetFrameworks(
                packageSpec
                .TargetFrameworks
                .Select(tfm => ToTargetFrameworkInfo(tfm, projectProperties)));

            var targetFrameworks2 = new VsTargetFrameworks2(
                packageSpec
                .TargetFrameworks
                .Select(tfm => ToTargetFrameworkInfo2(tfm, projectProperties)));

            var pri = new VsProjectRestoreInfo(
                baseIntermediatePath,
                targetFrameworks);

            var pri2 = new VsProjectRestoreInfo2(
                baseIntermediatePath,
                targetFrameworks2);

            if (crossTargeting)
            {
                pri.OriginalTargetFrameworks = string.Join(";",
                                                           packageSpec
                                                           .TargetFrameworks
                                                           .Select(tfm => tfm.FrameworkName.GetShortFolderName()));
            }

            return(new ProjectRestoreInfoBuilder(pri, pri2));
        }
Exemple #2
0
 private ProjectRestoreInfoBuilder(VsProjectRestoreInfo pri, VsProjectRestoreInfo2 pri2)
 {
     _projectRestoreInfo  = pri;
     _projectRestoreInfo2 = pri2;
 }