public int UpdateProjectCfg_Begin(IVsHierarchy pHierProj, IVsCfg pCfgProj, IVsCfg pCfgSln, uint dwAction, ref int pfCancel) { if (allTasksCleanedDuringThisSolutionUpdate) { return(0); } var start = DateTime.Now; bool cleanAll = false; VSSOLNBUILDUPDATEFLAGS flags = (VSSOLNBUILDUPDATEFLAGS)dwAction; if ((flags & VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_FORCE_UPDATE) != 0) { cleanAll = true; } if (cleanAll) { allTasksCleanedDuringThisSolutionUpdate = true; tools.ClearTasks(); } else { tools.ClearTasksOnHierarchy(pHierProj); } Debug.WriteLine("UpdateProjectCfg_Begin: {0}", ElapsedSince(start)); return(0); }
public static ISolutionBuildManager ImplementBusy(VSSOLNBUILDUPDATEFLAGS buildFlags = VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_NONE) { var buildManager = new Mock <ISolutionBuildManager>(); buildManager.Setup(b => b.QueryBuildManagerBusy()) .Returns((int)buildFlags); buildManager.Setup(b => b.QueryBuildManagerBusyEx()) .Returns((uint)buildFlags); return(buildManager.Object); }
/// <summary> /// Starts the specified build operation on the project for the currently selected project configuration. /// </summary> /// <param name="operation">The operation to perform.</param> public void StartBuild(BuildOperation operation) { Tracer.VerifyEnumArgument((int)operation, "operation", typeof(BuildOperation)); // We have to verify that the environment is not busy right now if (Package.Instance.Context.IsSolutionBuilding) { Tracer.WriteLineVerbose(classType, "StartBuild", "The build manager is busy right now."); return; } // Get the build manager from VS IVsSolutionBuildManager solutionBuildMgr = this.ServiceProvider.GetServiceOrThrow(typeof(SVsSolutionBuildManager), typeof(IVsSolutionBuildManager), classType, "StartBuild") as IVsSolutionBuildManager; // Convert the enum to one of the VS flags VSSOLNBUILDUPDATEFLAGS flags = VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_NONE; switch (operation) { case BuildOperation.Clean: flags |= VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_CLEAN; break; case BuildOperation.Build: flags |= VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_BUILD; break; case BuildOperation.Rebuild: flags |= VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_CLEAN | VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_BUILD; break; default: Tracer.Fail("Unknown BuildOperation '{0}'", operation.ToString()); return; } NativeMethods.ThrowOnFailure(solutionBuildMgr.StartSimpleUpdateProjectConfiguration((IVsHierarchy)this, null, null, (uint)flags, 0, 0)); }
internal override void OnUpdateConfigBegin(IVsHierarchy pHierProj, VSSOLNBUILDUPDATEFLAGS dwAction, ref int pfCancel) { if (!this.Enabled) { return; } if (dwAction == VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_CLEAN) { return; } foreach (UIHierarchyItem hierItem in VisualStudioHelpers.GetAllItemsFromSolutionExplorer(this.ApplicationObject.ToolWindows.SolutionExplorer)) { if (hierItem.Name != null && hierItem.Name.ToLower().EndsWith(".bim")) { Microsoft.AnalysisServices.BackEnd.DataModelingSandbox sandbox = TabularHelpers.GetTabularSandboxFromBimFile(this, false); if (sandbox == null) { var sandboxEditor = TabularHelpers.GetTabularSandboxEditorFromBimFile(hierItem, true); if (sandboxEditor != null) { sandbox = sandboxEditor.Sandbox; } } if (sandbox != null) { #if !DENALI && !SQL2014 if (sandbox.IsTabularMetadata) { return; } #endif List <BIDSHelperPluginBase> checks = new List <BIDSHelperPluginBase>(); foreach (BIDSHelperPluginBase plugin in BIDSHelperPackage.Plugins.Values) { Type t = plugin.GetType(); if (plugin is ITabularOnPreBuildAnnotationCheck && !t.IsInterface && !t.IsAbstract) { ITabularOnPreBuildAnnotationCheck check = (ITabularOnPreBuildAnnotationCheck)plugin; if (check.TabularOnPreBuildAnnotationCheckPriority == TabularOnPreBuildAnnotationCheckPriority.HighPriority) { checks.Insert(0, plugin); //insert the high priority checks at the front of the list so they get run first } else { checks.Add(plugin); } } } foreach (BIDSHelperPluginBase plugin in checks) { ITabularOnPreBuildAnnotationCheck check = (ITabularOnPreBuildAnnotationCheck)plugin; string sWarning = check.GetPreBuildWarning(sandbox); if (sWarning != null) { if (MessageBox.Show(sWarning, "BIDS Helper Pre-Build Warning - " + plugin.FeatureName, MessageBoxButtons.OKCancel) == DialogResult.OK) { Microsoft.VisualStudio.Project.Automation.OAFileItem project = hierItem.Object as Microsoft.VisualStudio.Project.Automation.OAFileItem; Window win = project.Open(EnvDTE.Constants.vsViewKindPrimary); win.Activate(); check.FixPreBuildWarning(sandbox); project.Save(hierItem.Name); } } } } } } }
internal abstract void OnUpdateConfigBegin(IVsHierarchy pHierProj, VSSOLNBUILDUPDATEFLAGS dwAction, ref int pfCancel);
public static BuildAction ConvertSolutionBuildFlagsToBuildAction(uint dwAction, VSSOLNBUILDUPDATEFLAGS solutionFlags) { if (solutionFlags == (VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_NONE | VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_BUILD | VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_FORCE_UPDATE)) { return(BuildAction.RebuildAll); } else if (solutionFlags == (VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_NONE | VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_CLEAN)) { return(BuildAction.Clean); } else if (solutionFlags == (VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_NONE | VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_BUILD)) { return(BuildAction.Build); } else { DiagnosticsClient.TrackTrace($"Received unknown DW Action {dwAction} (SolutionFlags: {solutionFlags}."); return(BuildAction.Unknown); } }