internal async System.Threading.Tasks.Task ProfileProject(SessionNode session, EnvDTE.Project projectToProfile, bool openReport)
        {
            if (!await UIThread.InvokeTask(() => EnsureProjectUpToDate(projectToProfile)) &&
                await UIThread.InvokeAsync(() => MessageBox.Show(Resources.FailedToBuild, Resources.NodejsToolsForVS, MessageBoxButton.YesNo)) == MessageBoxResult.No)
            {
                return;
            }

            var    interpreterArgs = (string)projectToProfile.Properties.Item("NodeExeArguments").Value;
            var    scriptArgs      = (string)projectToProfile.Properties.Item("ScriptArguments").Value;
            var    startBrowser    = (bool)projectToProfile.Properties.Item("StartWebBrowser").Value;
            string launchUrl       = (string)projectToProfile.Properties.Item("LaunchUrl").Value;

            int?port = (int?)projectToProfile.Properties.Item("NodejsPort").Value;

            string interpreterPath = (string)projectToProfile.Properties.Item("NodeExePath").Value;

            string startupFile = (string)projectToProfile.Properties.Item("StartupFile").Value;

            if (String.IsNullOrEmpty(startupFile))
            {
                MessageBox.Show("Project has no configured startup file, cannot start profiling.", Resources.NodejsToolsForVS);
                return;
            }

            string workingDir = projectToProfile.Properties.Item("WorkingDirectory").Value as string;

            if (String.IsNullOrEmpty(workingDir) || workingDir == ".")
            {
                workingDir = projectToProfile.Properties.Item("ProjectHome").Value as string;
                if (String.IsNullOrEmpty(workingDir))
                {
                    workingDir = Path.GetDirectoryName(projectToProfile.FullName);
                }
            }

            RunProfiler(
                session,
                interpreterPath,
                interpreterArgs,
                startupFile,
                scriptArgs,
                workingDir,
                null,
                openReport,
                launchUrl,
                port,
                startBrowser
                );
        }