public static void RefreshProjects()

in src/dotnet/RiderPlugin.UnrealLink/PluginInstaller/UnrealProjectsRefresher.cs [30:65]


        public static void RefreshProjects(Lifetime parentLifetime,
            [NotNull] ISolution solution,
            [CanBeNull] UnrealPluginInstallInfo.InstallDescription installDescription,
            [CanBeNull] VirtualFileSystemPath engineRoot)
        {
            parentLifetime.UsingNestedAsync(async lt =>
            {
                var lifetimeDefinition = lt.CreateNested();
                var lifetime = lifetimeDefinition.Lifetime;
                
                var unrealHost = solution.GetComponent<UnrealHost>();
                
                lifetime.Bracket(
                    () => unrealHost.myModel.RefreshInProgress.Value = true,
                    () => unrealHost.myModel.RefreshInProgress.Value = false
                );

                var task = BackgroundProgressBuilder.Create()
                    .AsCancelable(() =>
                    {
                        unrealHost.myModel.RiderLinkInstallMessage(
                            new InstallMessage(Strings.RefreshingProjectsFilesHasBeenCancelled_Text, ContentType.Error));
                        lifetimeDefinition.Terminate();
                    })
                    .WithHeader(Strings.RefreshingProjectFiles_Text);
                solution.GetComponent<BackgroundProgressManager>().AddNewTask(lifetime, task);
                var uprojectFile = installDescription?.UprojectPath;
                if (uprojectFile.IsNullOrEmpty())
                {
                    var cppUe4SolutionDetector = solution.GetComponent<ICppUE4SolutionDetector>();
                    uprojectFile = cppUe4SolutionDetector.GetUProjectPath();
                }

                await lifetime.StartBackground(() => RegenerateProjectFiles(lifetime, solution, unrealHost, engineRoot, uprojectFile));
            });
        }