VsTeXProject.VisualStudio.Project.ProjectNode.InvokeMsBuild C# (CSharp) Method

InvokeMsBuild() private method

private InvokeMsBuild ( string target ) : MSBuildResult
target string
return MSBuildResult
        protected virtual MSBuildResult InvokeMsBuild(string target)
        {
            var result = MSBuildResult.Failed;
            const bool designTime = true;
            var requiresUIThread = UIThread.Instance.IsUIThread;
                // we don't run tasks that require calling the STA thread, so unless we're ON it, we don't need it.

            var accessor = Site.GetService(typeof (SVsBuildManagerAccessor)) as IVsBuildManagerAccessor;
            MSBuildExecution.BuildSubmission submission = null;

            if (buildProject != null)
            {
                if (!TryBeginBuild(designTime, requiresUIThread))
                {
                    throw new InvalidOperationException("A build is already in progress.");
                }

                try
                {
                    // Do the actual Build
                    var targetsToBuild = new string[target != null ? 1 : 0];
                    if (target != null)
                    {
                        targetsToBuild[0] = target;
                    }

                    CurrentConfig = BuildProject.CreateProjectInstance();

                    var requestData = new MSBuildExecution.BuildRequestData(CurrentConfig, targetsToBuild,
                        BuildProject.ProjectCollection.HostServices,
                        MSBuildExecution.BuildRequestDataFlags.ReplaceExistingProjectInstance);
                    submission = MSBuildExecution.BuildManager.DefaultBuildManager.PendBuildRequest(requestData);
                    if (accessor != null)
                    {
                        ErrorHandler.ThrowOnFailure(accessor.RegisterLogger(submission.SubmissionId, buildLogger));
                    }

                    var buildResult = submission.Execute();

                    result = buildResult.OverallResult == MSBuildExecution.BuildResultCode.Success
                        ? MSBuildResult.Successful
                        : MSBuildResult.Failed;
                }
                finally
                {
                    EndBuild(submission, designTime, requiresUIThread);
                }
            }

            return result;
        }
ProjectNode