From ca47896204482bf4a6979e3838bf7f09f61cebeb Mon Sep 17 00:00:00 2001
From: giy <giy@omp-system.ru>
Date: Fri, 02 Sep 2022 14:16:56 +0300
Subject: [PATCH] Обновление до версии 2.9.0

---
 QtVsTools.Package/Package/QtMsBuildConverter.cs |   33 ++++++++++++++++++++++++++-------
 1 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/QtVsTools.Package/Package/QtMsBuildConverter.cs b/QtVsTools.Package/Package/QtMsBuildConverter.cs
index eac783f..79d484d 100644
--- a/QtVsTools.Package/Package/QtMsBuildConverter.cs
+++ b/QtVsTools.Package/Package/QtMsBuildConverter.cs
@@ -32,17 +32,21 @@
 using System.Linq;
 using System.Windows.Forms;
 using Microsoft.VisualStudio;
+using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Shell.Interop;
 using Microsoft.VisualStudio.VCProjectEngine;
-using QtVsTools.Core;
-using QtVsTools.VisualStudio;
 
 namespace QtVsTools
 {
+    using Core;
+    using VisualStudio;
+
     static class QtMsBuildConverter
     {
         public static bool SolutionToQtMsBuild()
         {
+            ThreadHelper.ThrowIfNotOnUIThread();
+
             var solution = QtVsToolsPackage.Instance.Dte.Solution;
             if (solution == null)
                 return ErrorMessage(string.Format(SR.GetString("ErrorConvertingProject"), ""));
@@ -53,8 +57,8 @@
                 return WarningMessage(SR.GetString("NoProjectsToConvert"));
 
             foreach (EnvDTE.Project project in allProjects) {
-                if ((HelperFunctions.IsQtProject(project)
-                    || HelperFunctions.IsQMakeProject(project))
+                if ((HelperFunctions.IsVsToolsProject(project)
+                    || HelperFunctions.IsQtProject(project))
                     && !QtProject.IsQtMsBuildEnabled(project)) {
                     projects.Add(project);
                 }
@@ -68,7 +72,14 @@
                 MessageBoxButtons.YesNo) != DialogResult.Yes)
                 return WarningMessage(SR.GetString("CancelConvertingProject"));
 
-            if (projects.Where(project => project.IsDirty).Any()) {
+            bool hasDirtyProjects = projects
+                .Where(project =>
+                {
+                    ThreadHelper.ThrowIfNotOnUIThread();
+                    return project.IsDirty;
+                })
+                .Any();
+            if (hasDirtyProjects) {
                 if (MessageBox.Show(
                     SR.GetString("ConvertSaveConfirmation"),
                     SR.GetString("ConvertTitle"),
@@ -76,7 +87,13 @@
                     return WarningMessage(SR.GetString("CancelConvertingProject"));
             }
 
-            var projectPaths = projects.Select(x => x.FullName).ToList();
+            var projectPaths = projects
+                .Select(x =>
+                {
+                    ThreadHelper.ThrowIfNotOnUIThread();
+                    return x.FullName;
+                })
+                .ToList();
 
             string solutionPath = solution.FileName;
             solution.Close(true);
@@ -142,6 +159,8 @@
 
         public static bool ProjectToQtMsBuild(EnvDTE.Project project, bool askConfirmation = true)
         {
+            ThreadHelper.ThrowIfNotOnUIThread();
+
             if (project == null)
                 return ErrorMessage(string.Format(SR.GetString("ErrorConvertingProject"), ""));
             var pathToProject = project.FullName;
@@ -178,7 +197,7 @@
             try {
                 if (solution.UnloadProject(
                     ref projectGuid,
-                    (uint)_VSProjectUnloadStatus.UNLOADSTATUS_LoadPendingIfNeeded)
+                    (uint)_VSProjectUnloadStatus.UNLOADSTATUS_UnloadedByUser)
                     != VSConstants.S_OK)
                     return ErrorMessage(
                         string.Format(SR.GetString("ErrorConvertingProject"), projectName));

--
Gitblit v1.9.1