コード例 #1
0
        private void RunBuild(String projectPath, String target, Dictionary <String, String> properties, Action <BuildLogger> handler)
        {
            BuildLogger         logger          = new BuildLogger();
            IVsOutputWindow     outWindow       = Package.GetGlobalService(typeof(SVsOutputWindow)) as IVsOutputWindow;
            Guid                generalPaneGuid = VSConstants.GUID_OutWindowDebugPane;
            IVsOutputWindowPane debugPane;

            outWindow.GetPane(ref generalPaneGuid, out debugPane);
            logger.OutputWindow = debugPane;

            logger.Verbosity = LoggerVerbosity.Detailed;
            MsBuild.Execution.BuildRequestData buildRequest = new MsBuild.Execution.BuildRequestData(projectPath, properties, null, new string[] { target }, null);
            MsBuild.Execution.BuildParameters  buildParams  = new MsBuild.Execution.BuildParameters()
            {
                DetailedSummary = false,
                Loggers         = new List <ILogger>()
                {
                    logger
                }
            };

            ThreadPool.QueueUserWorkItem((Object) =>
            {
                String selectedFiles = properties["SelectedFiles"];
                logger.Write(String.Format("Alcantarea info: compile started \"{0}\"\n", selectedFiles));
                try
                {
                    MsBuild.Execution.BuildResult result = MsBuild.Execution.BuildManager.DefaultBuildManager.Build(buildParams, buildRequest);
                    if (result.OverallResult == MsBuild.Execution.BuildResultCode.Success)
                    {
                        logger.Write(String.Format("Alcantarea info: compile succeeded \"{0}\"\n", selectedFiles));
                        handler(logger);
                    }
                    else
                    {
                        logger.Write(String.Format("Alcantarea info: compile failed \"{0}\"\n", selectedFiles));
                    }
                }
                catch (Exception er)
                {
                }
            });
        }
コード例 #2
0
 internal BuildRequestUnblocker(BuildRequest parentRequest, BuildResult buildResult)
     : this(buildResult)
 {
     ErrorUtilities.VerifyThrowArgumentNull(parentRequest, nameof(parentRequest));
     _blockedGlobalRequestId = parentRequest.GlobalRequestId;
 }
コード例 #3
0
 internal BuildRequestUnblocker(BuildResult buildResult)
 {
     ErrorUtilities.VerifyThrowArgumentNull(buildResult, nameof(buildResult));
     _buildResult            = buildResult;
     _blockedGlobalRequestId = buildResult.ParentGlobalRequestId;
 }
コード例 #4
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="type">The response type.</param>
 public ResultsCacheResponse(ResultsCacheResponseType type)
 {
     Type = type;
     Results = null;
     ExplicitTargetsToBuild = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
 }
コード例 #5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="type">The response type.</param>
 public ResultsCacheResponse(ResultsCacheResponseType type)
 {
     Type    = type;
     Results = null;
     ExplicitTargetsToBuild = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
 }
コード例 #6
0
 /// <summary>
 /// Constructor for the unblocker for circular dependencies
 /// </summary>
 internal BuildRequestUnblocker(BuildRequest parentRequest, BuildResult buildResult)
     : this(buildResult)
 {
     ErrorUtilities.VerifyThrowArgumentNull(parentRequest, "parentRequest");
     _blockedGlobalRequestId = parentRequest.GlobalRequestId;
 }
コード例 #7
0
 /// <summary>
 /// Constructor for the unblocker where we are blocked waiting for results.
 /// </summary>
 internal BuildRequestUnblocker(BuildResult buildResult)
 {
     ErrorUtilities.VerifyThrowArgumentNull(buildResult, "buildResult");
     _buildResult = buildResult;
     _blockedGlobalRequestId = buildResult.ParentGlobalRequestId;
 }