예제 #1
0
        protected override bool UpgradeProject(IProjectStore projectStore, ConversionType initialVersion, ConversionType targetVersion)
        {
            ProjectLanguage projectLanguage = ProjectStoreHelper.GetProjectLanguage(projectStore);

            if (projectLanguage != ProjectLanguage.CSharp && projectLanguage != ProjectLanguage.VisualBasic)
            {
                return(false);
            }
            if (targetVersion != ConversionType.WebAppProject10)
            {
                return(false);
            }
            string[] array = projectStore.ProjectImports.ToArray <string>();
            for (int i = 0; i < (int)array.Length; i++)
            {
                string str = array[i];
                if (WebProjectConverter.webApplicationTargetVersion.Match(str).Success&& !projectStore.ChangeImport(str, "$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets"))
                {
                    return(false);
                }
            }
            if (!projectStore.SetStoreVersion(CommonVersions.Version4_0))
            {
                return(false);
            }
            return(true);
        }
        public override ConversionType GetVersion(ConversionTarget file)
        {
            if (!file.IsProject)
            {
                return(ConversionType.Unknown);
            }
            IProjectStore projectStore = file.ProjectStore;

            if (Microsoft.Expression.Framework.Interop.TypeHelper.ConvertType <bool>(projectStore.GetProperty("WindowsCEEnabled")) || Microsoft.Expression.Framework.Interop.TypeHelper.ConvertType <bool>(projectStore.GetProperty("SilverlightMobile")))
            {
                return(ConversionType.Unsupported);
            }
            Version silverlightVersion = ProjectStoreHelper.GetSilverlightVersion(projectStore);

            if (silverlightVersion == CommonVersions.Version2_0)
            {
                return(ConversionType.ProjectSilverlight2);
            }
            if (silverlightVersion == CommonVersions.Version3_0)
            {
                return(ConversionType.ProjectSilverlight3);
            }
            if (silverlightVersion == CommonVersions.Version4_0)
            {
                return(ConversionType.ProjectSilverlight4);
            }
            return(ConversionType.Unknown);
        }
예제 #3
0
        public override ConversionType GetVersion(ConversionTarget file)
        {
            if (!file.IsProject)
            {
                return(ConversionType.Unknown);
            }
            FrameworkName targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(file.ProjectStore);

            if (targetFrameworkName == null || targetFrameworkName.Identifier != ".NETFramework")
            {
                return(ConversionType.Unknown);
            }
            if (ProjectStoreHelper.UsesWpf(file.ProjectStore))
            {
                if (targetFrameworkName.Version == CommonVersions.Version3_0)
                {
                    return(ConversionType.ProjectWpf30);
                }
                if (targetFrameworkName.Version == CommonVersions.Version3_5)
                {
                    return(ConversionType.ProjectWpf35);
                }
                if (targetFrameworkName.Version == CommonVersions.Version4_0)
                {
                    return(ConversionType.ProjectWpf40);
                }
            }
            return(ConversionType.Unknown);
        }
예제 #4
0
 public override void Execute()
 {
     this.HandleBasicExceptions(() => {
         using (ProjectUpgradeLogger projectUpgradeLogger = new ProjectUpgradeLogger())
         {
             IProject project = this.SelectedProjectOrNull();
             ISolutionManagement solutionManagement = this.Solution() as ISolutionManagement;
             if (base.Services.PromptUserYesNo(StringTable.UpgradeProjectWarning))
             {
                 if (this.SaveSolution(true))
                 {
                     if (this.SaveSolution(true))
                     {
                         DocumentReference documentReference = project.DocumentReference;
                         solutionManagement.CloseProject(project);
                         IProjectStore projectStore = null;
                         try
                         {
                             projectStore = ProjectStoreHelper.CreateProjectStore(documentReference, base.Services, ProjectStoreHelper.DefaultProjectCreationChain);
                             using (IDisposable disposable = this.SuspendWatchers())
                             {
                                 if (this.converter.Convert(new ConversionTarget(projectStore), this.sourceType, this.targetType))
                                 {
                                     using (IDisposable disposable1 = projectUpgradeLogger.SuspendLogging())
                                     {
                                         projectStore.Dispose();
                                         projectStore = ProjectStoreHelper.CreateProjectStore(documentReference, base.Services, ProjectStoreHelper.DefaultProjectCreationChain);
                                         if (solutionManagement.AddProject(projectStore) == null)
                                         {
                                             projectStore.Dispose();
                                         }
                                     }
                                     solutionManagement.OpenInitialViews();
                                 }
                                 else
                                 {
                                     projectStore.Dispose();
                                     return;
                                 }
                             }
                             UpgradeWizard.SaveLogAndPromptUser(projectUpgradeLogger, base.Services, solutionManagement.DocumentReference.Path, true);
                         }
                         catch
                         {
                             if (projectStore != null)
                             {
                                 projectStore.Dispose();
                             }
                             UpgradeWizard.SaveLogAndPromptUser(projectUpgradeLogger, base.Services, solutionManagement.DocumentReference.Path, false);
                             throw;
                         }
                     }
                 }
             }
         }
     });
 }
예제 #5
0
        public override bool IsValidTypeForProject(IProjectStore projectStore)
        {
            FrameworkName targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(projectStore);

            if (targetFrameworkName == (FrameworkName)null || targetFrameworkName.Identifier != ".NETFramework" || !(targetFrameworkName.Version == CommonVersions.Version3_5) && !(targetFrameworkName.Version == CommonVersions.Version4_0) || !base.IsValidTypeForProject(projectStore))
            {
                return(false);
            }
            return(ProjectStoreHelper.UsesWpf(projectStore));
        }
예제 #6
0
 public override void Execute()
 {
     this.HandleBasicExceptions(() => {
         string str = base.SelectProject(this.DisplayName);
         if (!string.IsNullOrEmpty(str))
         {
             IProjectStore projectStore = ProjectStoreHelper.CreateProjectStore(DocumentReference.Create(str), base.Services, ProjectStoreHelper.ResilientProjectCreationChain);
             if (projectStore == null)
             {
                 return;
             }
             UpgradeWizard upgradeWizard = new UpgradeWizard(this.Solution() as ISolutionManagement,
                                                             from project in this.Solution().Projects.OfType <ProjectBase>()
                                                             select project.ProjectStore, projectStore, null, base.Services);
             try
             {
                 if (!upgradeWizard.Upgrade())
                 {
                     return;
                 }
             }
             finally
             {
                 projectStore.Dispose();
                 projectStore = null;
             }
             projectStore = ProjectStoreHelper.CreateProjectStore(DocumentReference.Create(str), base.Services, ProjectStoreHelper.DefaultProjectCreationChain);
             if (projectStore == null)
             {
                 return;
             }
             INamedProject namedProject = null;
             try
             {
                 namedProject = this.ProjectManager().AddProject(projectStore);
                 if (namedProject != null)
                 {
                     base.UpdateSourceControl(EnumerableExtensions.AsEnumerable <INamedProject>(namedProject));
                     base.ActivateProjectPane();
                 }
             }
             finally
             {
                 if (namedProject == null && projectStore != null)
                 {
                     projectStore.Dispose();
                     projectStore = null;
                 }
             }
         }
     });
 }
예제 #7
0
        public static ProjectLicenseGroup GetLicenseGroup(IProjectStore projectStore)
        {
            if (ProjectStoreHelper.IsSketchFlowProject(projectStore))
            {
                return(ProjectLicenseGroup.SketchFlow);
            }
            FrameworkName targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(projectStore);

            if (targetFrameworkName != null && !string.IsNullOrEmpty(targetFrameworkName.Profile) && targetFrameworkName.Profile.Equals("WindowsPhone", StringComparison.OrdinalIgnoreCase))
            {
                return(ProjectLicenseGroup.SilverlightMobile);
            }
            return(ProjectLicenseGroup.WpfSilverlight);
        }
예제 #8
0
        public override IProjectCreateError CanCreateProject(IProjectStore projectStore)
        {
            if (!new SilverlightChecker(this.serviceProvider).IsAvailable)
            {
                return((IProjectCreateError) new ProjectCreateError("DoNotWarnAboutSilverlightNotInstalled", StringTable.SilverlightNotInstalled));
            }
            FrameworkName targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(projectStore);

            if (targetFrameworkName != (FrameworkName)null && targetFrameworkName.Identifier.Equals(SilverlightProjectType.MobileFrameworkName.Identifier, StringComparison.OrdinalIgnoreCase) && (targetFrameworkName.Profile.Equals(SilverlightProjectType.MobileFrameworkName.Profile, StringComparison.OrdinalIgnoreCase) && targetFrameworkName.Version >= SilverlightProjectType.MobileFrameworkName.Version) && !ProjectAdapterHelper.IsTargetFrameworkSupported(this.serviceProvider, targetFrameworkName))
            {
                return((IProjectCreateError) new ProjectCreateError("DoNotWarnAboutWindowsPhoneNotInstalled", StringTable.WindowsPhoneNotInstalled));
            }
            return((IProjectCreateError)null);
        }
예제 #9
0
        protected override bool UpgradeProject(IProjectStore projectStore, ConversionType initialVersion, ConversionType targetVersion)
        {
            if (targetVersion != ConversionType.BuildToolsVersion40)
            {
                return(false);
            }
            Version silverlightVersion = ProjectStoreHelper.GetSilverlightVersion(projectStore);

            if (silverlightVersion == null)
            {
                return(projectStore.SetStoreVersion(CommonVersions.Version4_0));
            }
            return(SilverlightProjectConverter.ChangeImportPath(projectStore, silverlightVersion.ToString()));
        }
예제 #10
0
        public override bool IsValidTypeForProject(IProjectStore projectStore)
        {
            FrameworkName targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(projectStore);

            if (targetFrameworkName == (FrameworkName)null || targetFrameworkName.Identifier != "Silverlight" || !(targetFrameworkName.Version == CommonVersions.Version3_0) && !(targetFrameworkName.Version == CommonVersions.Version4_0))
            {
                return(false);
            }
            string property = projectStore.GetProperty("OutputType");

            if (string.IsNullOrEmpty(property) || !property.Equals("Library", StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }
            return(base.IsValidTypeForProject(projectStore));
        }
예제 #11
0
        public override ConversionType GetVersion(ConversionTarget file)
        {
            ConversionType conversionType;

            if (!file.IsProject)
            {
                return(ConversionType.Unknown);
            }
            FrameworkName targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(file.ProjectStore);

            if (targetFrameworkName == null || targetFrameworkName.Identifier != ".NETFramework")
            {
                return(ConversionType.Unknown);
            }
            string property = file.ProjectStore.GetProperty("ProjectTypeGuids");

            if (!string.IsNullOrEmpty(property) && property.IndexOf("{349c5851-65df-11da-9384-00065b846f21}", StringComparison.OrdinalIgnoreCase) != -1)
            {
                using (IEnumerator <string> enumerator = file.ProjectStore.ProjectImports.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        string current = enumerator.Current;
                        Match  match   = WebProjectConverter.webApplicationTargetVersion.Match(current);
                        if (!match.Success || !string.Equals(match.Groups["version"].Value, "v9.0", StringComparison.OrdinalIgnoreCase))
                        {
                            continue;
                        }
                        conversionType = ConversionType.WebAppProject9;
                        return(conversionType);
                    }
                    return(ConversionType.Unknown);
                }
                return(conversionType);
            }
            return(ConversionType.Unknown);
        }
예제 #12
0
 public override ConversionType GetVersion(ConversionTarget project)
 {
     if (project.IsProject && ProjectStoreHelper.DoesLanguageSupportXaml(project.ProjectStore))
     {
         Version storeVersion = project.ProjectStore.StoreVersion;
         if (storeVersion == CommonVersions.Version2_0)
         {
             return(ConversionType.BuildToolsVersion20);
         }
         if (storeVersion == CommonVersions.Version3_5)
         {
             return(ConversionType.BuildToolsVersion35);
         }
         if (storeVersion == CommonVersions.Version4_0)
         {
             return(ConversionType.BuildToolsVersion40);
         }
         if (storeVersion == null)
         {
             return(ConversionType.BuildToolsVersionNone);
         }
     }
     return(ConversionType.Unknown);
 }
        internal static bool ChangeImportPath(IProjectStore projectStore, string newVersion)
        {
            string          str;
            ProjectLanguage projectLanguage = ProjectStoreHelper.GetProjectLanguage(projectStore);

            if (!ProjectStoreHelper.DoesLanguageSupportXaml(projectLanguage))
            {
                return(false);
            }
            switch (projectLanguage)
            {
            case ProjectLanguage.CSharp:
            {
                str = "$(MSBuildExtensionsPath32)\\Microsoft\\Silverlight\\$(SilverlightVersion)\\Microsoft.Silverlight.CSharp.targets";
                break;
            }

            case ProjectLanguage.FSharp:
            {
                return(false);
            }

            case ProjectLanguage.VisualBasic:
            {
                str = "$(MSBuildExtensionsPath32)\\Microsoft\\Silverlight\\$(SilverlightVersion)\\Microsoft.Silverlight.VisualBasic.targets";
                break;
            }

            default:
            {
                return(false);
            }
            }
            string[] array = ProjectStoreHelper.GetSilverlightImports(projectStore).ToArray <string>();
            if ((int)array.Length != 0)
            {
                string[] strArrays = array;
                for (int i = 0; i < (int)strArrays.Length; i++)
                {
                    if (!projectStore.ChangeImport(strArrays[i], str))
                    {
                        return(false);
                    }
                }
            }
            else
            {
                projectStore.AddImport(str);
            }
            projectStore.SetProperty("TargetFrameworkVersion", string.Concat("v", newVersion));
            projectStore.SetProperty("TargetFrameworkIdentifier", "Silverlight");
            projectStore.SetProperty("SilverlightVersion", "$(TargetFrameworkVersion)");
            projectStore.SetStoreVersion(CommonVersions.Version4_0);
            foreach (IProjectItemData item in projectStore.GetItems("Reference"))
            {
                string metadata = item.GetMetadata("RequiredTargetFramework");
                if (string.IsNullOrEmpty(metadata) || !metadata.Trim().Equals("3.5", StringComparison.Ordinal))
                {
                    continue;
                }
                item.SetItemMetadata("RequiredTargetFramework", "3.0");
            }
            return(true);
        }
예제 #14
0
        internal UpgradeWizard.UpgradeResponse PromptToUpgrade(Dictionary <ConversionType, ConversionType> conversionMapping, out bool?doNotShowAgain, ref string backupLocation, out IEnumerable <UpgradeAction> proposedUpgrades)
        {
            doNotShowAgain   = null;
            proposedUpgrades = Enumerable.Empty <UpgradeAction>();
            List <UpgradeAction> list = this.GetProposedUpgrades(conversionMapping).ToList <UpgradeAction>();

            if (list.Count == 0)
            {
                return(UpgradeWizard.UpgradeResponse.DontUpgrade);
            }
            List <ConversionType> conversionTypes  = new List <ConversionType>();
            List <ConversionType> conversionTypes1 = new List <ConversionType>();
            bool flag  = false;
            bool flag1 = false;

            if (!this.sketchFlowSolution)
            {
                using (IEnumerator <ConversionTarget> enumerator = this.GetConversionTargets().GetEnumerator())
                {
                    do
                    {
Label0:
                        if (!enumerator.MoveNext())
                        {
                            break;
                        }
                        ConversionTarget current             = enumerator.Current;
                        FrameworkName    targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(current.ProjectStore);
                        if (targetFrameworkName == null || targetFrameworkName.Version == CommonVersions.Version4_0)
                        {
                            goto Label0;
                        }
                        else if (flag || !ProjectStoreHelper.UsesSilverlight(current.ProjectStore) || targetFrameworkName.Version.Major <= 1)
                        {
                            if (flag1 || !ProjectStoreHelper.UsesWpf(current.ProjectStore) || !(targetFrameworkName.Version >= CommonVersions.Version3_0))
                            {
                                continue;
                            }
                            flag1 = true;
                        }
                        else
                        {
                            flag = true;
                        }
                    }while (!flag1 || !flag);
                }
                if (flag1)
                {
                    conversionTypes1.Add(ConversionType.ProjectWpf35);
                    conversionTypes1.Add(ConversionType.ProjectWpf40);
                }
                if (flag)
                {
                    conversionTypes.Add(ConversionType.ProjectSilverlight3);
                    conversionTypes.Add(ConversionType.ProjectSilverlight4);
                }
            }
            bool flag2 = this.targetStore != null;
            bool flag3 = !flag2;
            bool flag4 = !flag2;
            UpgradeProjectDialog upgradeProjectDialog = new UpgradeProjectDialog(base.Services.ExpressionInformationService(), conversionTypes, conversionTypes1, flag3, flag4);
            ProjectDialogResult  projectDialogResult  = upgradeProjectDialog.ShowProjectDialog();

            doNotShowAgain = new bool?(upgradeProjectDialog.DoNotShowAgain);
            if (upgradeProjectDialog.Backup && projectDialogResult == ProjectDialogResult.Yes)
            {
                string      parentDirectory              = Microsoft.Expression.Framework.Documents.PathHelper.GetParentDirectory(Microsoft.Expression.Framework.Documents.PathHelper.GetDirectory(base.Solution.DocumentReference.Path));
                CultureInfo invariantCulture             = CultureInfo.InvariantCulture;
                string      newNameCopyTemplate          = StringTable.NewNameCopyTemplate;
                object[]    fileNameWithoutExtension     = new object[] { Path.GetFileNameWithoutExtension(base.Solution.DocumentReference.DisplayName) };
                string      availableFileOrDirectoryName = string.Format(invariantCulture, newNameCopyTemplate, fileNameWithoutExtension);
                availableFileOrDirectoryName = Microsoft.Expression.Framework.Documents.PathHelper.GetAvailableFileOrDirectoryName(availableFileOrDirectoryName, null, parentDirectory, false);
                backupLocation = Path.Combine(parentDirectory, availableFileOrDirectoryName);
                string    str        = backupLocation;
                Exception exception1 = null;
                using (IDisposable disposable = TemporaryCursor.SetWaitCursor())
                {
                    ErrorHandling.HandleBasicExceptions(() => ProjectManager.CopyDirectory(Microsoft.Expression.Framework.Documents.PathHelper.GetDirectory(this.Solution.DocumentReference.Path), str), (Exception exception) => exception1 = exception);
                }
                if (exception1 != null)
                {
                    ErrorArgs errorArg = new ErrorArgs()
                    {
                        Message      = StringTable.UpgradeBackupFailed,
                        Exception    = exception1,
                        AutomationId = "BackupProjectErrorDialog"
                    };
                    base.Services.MessageDisplayService().ShowError(errorArg);
                    return(UpgradeWizard.UpgradeResponse.Cancel);
                }
            }
            switch (projectDialogResult)
            {
            case ProjectDialogResult.Yes:
            {
                if (this.sketchFlowSolution)
                {
                    proposedUpgrades = list;
                }
                else
                {
                    this.VersionMapping[ConversionType.ProjectSilverlight2] = upgradeProjectDialog.SelectedSilverlightVersion;
                    this.VersionMapping[ConversionType.ProjectSilverlight3] = upgradeProjectDialog.SelectedSilverlightVersion;
                    this.VersionMapping[ConversionType.ProjectWpf30]        = upgradeProjectDialog.SelectedDotNetVersion;
                    this.VersionMapping[ConversionType.ProjectWpf35]        = upgradeProjectDialog.SelectedDotNetVersion;
                    proposedUpgrades = this.GetProposedUpgrades(conversionMapping);
                }
                return(UpgradeWizard.UpgradeResponse.Upgrade);
            }

            case ProjectDialogResult.No:
            {
                return(UpgradeWizard.UpgradeResponse.DontUpgrade);
            }
            }
            return(UpgradeWizard.UpgradeResponse.Cancel);
        }
예제 #15
0
        public override ConversionType GetVersion(ConversionTarget project)
        {
            ConversionType conversionType;

            this.silverlightSolution = false;
            this.sketchFlowSolution  = false;
            this.frameworkSolution   = false;
            if (!project.IsSolution)
            {
                return(ConversionType.Unknown);
            }
            using (IEnumerator <IProjectStore> enumerator = this.contextProjectStores.GetEnumerator())
            {
                do
                {
                    if (!enumerator.MoveNext())
                    {
                        break;
                    }
                    IProjectStore current             = enumerator.Current;
                    FrameworkName targetFrameworkName = ProjectStoreHelper.GetTargetFrameworkName(current);
                    if (targetFrameworkName == null)
                    {
                        continue;
                    }
                    if (!this.frameworkSolution && targetFrameworkName.Identifier == ".NETFramework")
                    {
                        this.frameworkSolution = true;
                    }
                    if (!this.silverlightSolution && targetFrameworkName.Identifier == "Silverlight")
                    {
                        this.silverlightSolution = true;
                    }
                    if (this.sketchFlowSolution || !ProjectStoreHelper.IsSketchFlowProject(current))
                    {
                        continue;
                    }
                    this.sketchFlowSolution = true;
                }while (!this.silverlightSolution || !this.sketchFlowSolution || !this.frameworkSolution);
            }
            if (!this.silverlightSolution && !this.frameworkSolution)
            {
                return(ConversionType.Unknown);
            }
            ILicenseService service = base.Services.GetService <ILicenseService>();

            if (this.sketchFlowSolution && service != null && !LicensingHelper.IsSketchFlowLicensed(service))
            {
                return(ConversionType.Unknown);
            }
            using (IEnumerator <ConversionTarget> enumerator1 = this.GetConversionTargets().GetEnumerator())
            {
                while (enumerator1.MoveNext())
                {
                    ConversionTarget conversionTarget = enumerator1.Current;
                    if (!ConversionHelper.CheckAndAddFile(conversionTarget, this.Converters, this.VersionMapping, true).Any <UpgradeAction>())
                    {
                        continue;
                    }
                    conversionType = ConversionType.SolutionBlendV3;
                    return(conversionType);
                }
                return(ConversionType.SolutionBlendV4);
            }
            return(conversionType);
        }
예제 #16
0
        protected override bool UpgradeProject(IProjectStore projectStore, ConversionType initialVersion, ConversionType targetVersion)
        {
            ProjectLanguage projectLanguage = ProjectStoreHelper.GetProjectLanguage(projectStore);

            if (projectLanguage != ProjectLanguage.CSharp && projectLanguage != ProjectLanguage.VisualBasic)
            {
                return(false);
            }
            string         str            = null;
            ConversionType conversionType = targetVersion;

            switch (conversionType)
            {
            case ConversionType.ProjectWpf30:
            {
                str = "v3.0";
                break;
            }

            case ConversionType.ProjectWpf35:
            {
                str = "v3.5";
                break;
            }

            case ConversionType.ProjectWpf40:
            {
                str = "v4.0";
                break;
            }

            default:
            {
                switch (conversionType)
                {
                case ConversionType.Unsupported:
                case ConversionType.DoNothing:
                case ConversionType.Unknown:
                {
                    return(true);
                }

                default:
                {
                    return(false);
                }
                }
                break;
            }
            }
            WpfToolkitRemover.Update(projectStore, base.Context, initialVersion, targetVersion);
            if (!projectStore.SetProperty("TargetFrameworkVersion", str))
            {
                return(false);
            }
            if (!projectStore.SetStoreVersion(CommonVersions.Version4_0))
            {
                return(false);
            }
            if (targetVersion == ConversionType.ProjectWpf40 && !this.HandleVersion4Upgrade(projectStore))
            {
                return(false);
            }
            AssemblyReferenceHelper.RepairAssemblyReferences(projectStore);
            return(true);
        }