Наша сборка Qt VS Tools
giy
2022-09-02 ca47896204482bf4a6979e3838bf7f09f61cebeb
QtVsTools.Package/QtMsBuild/QtProjectIntelliSense.cs
@@ -31,12 +31,15 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Build.Framework;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Threading;
using Task = System.Threading.Tasks.Task;
using Thread = System.Threading.Thread;
namespace QtVsTools.QtMsBuild
{
    using Core;
    using Thread = System.Threading.Thread;
    static class QtProjectIntellisense
    {
@@ -45,25 +48,31 @@
            string configId = null,
            IEnumerable<string> selectedFiles = null)
        {
            if (project == null || !QtProjectTracker.IsTracked(project))
            ThreadHelper.ThrowIfNotOnUIThread();
            if (project == null || !QtProjectTracker.IsTracked(project.FullName))
                return;
            if (QtVsToolsPackage.Instance.Options.BuildDebugInformation) {
                Messages.Print(string.Format(
                    "{0:HH:mm:ss.FFF} QtProjectIntellisense({1}): Refreshing: [{2}] {3}",
                    DateTime.Now, Thread.CurrentThread.ManagedThreadId,
                    (configId != null) ? configId : "(all configs)", project.FullName));
            }
            Task.Run(() => RefreshAsync(project, configId, selectedFiles));
            string projectPath = project.FullName;
            _ = Task.Run(() => RefreshAsync(project, projectPath, configId, selectedFiles, false));
        }
        public static async Task RefreshAsync(
            EnvDTE.Project project,
            string projectPath,
            string configId = null,
            IEnumerable<string> selectedFiles = null)
            IEnumerable<string> selectedFiles = null,
            bool refreshQtVars = false)
        {
            if (project == null || !QtProjectTracker.IsTracked(project))
            if (project == null || !QtProjectTracker.IsTracked(projectPath))
                return;
            var tracker = QtProjectTracker.Get(project);
            var tracker = QtProjectTracker.Get(project, projectPath);
            await tracker.Initialized;
            var properties = new Dictionary<string, string>();
@@ -84,9 +93,14 @@
            }
            foreach (var config in configs) {
                await QtProjectBuild.StartBuildAsync(
                    project, config, properties, targets,
                    LoggerVerbosity.Quiet);
                if (refreshQtVars) {
                    await QtProjectBuild.StartBuildAsync(
                        project, projectPath, config, properties, targets,
                        LoggerVerbosity.Quiet);
                } else {
                    await QtProjectBuild.SetOutdatedAsync(
                        project, projectPath, config, LoggerVerbosity.Quiet);
                }
            }
        }
    }