/// <summary> /// Initializer of the Build.Framework.ILogger objects. /// Subscribes to specific events etc. /// </summary> /// <param name="evt"></param> public override void Initialize(IEventSource evt) { log = new Log(Verbosity); initializer = new Initializer(Parameters, log); // load with properties by default library = initializer.load(); setPropertiesByDefault(); attachCoreCommandListener(library); library.Event.solutionOpened(pUnkReserved, 0); // bring song evt.TargetStarted += onTargetStarted; evt.ProjectStarted += onProjectStarted; evt.AnyEventRaised += onAnyEventRaised; evt.ErrorRaised += onErrorRaised; evt.WarningRaised += onWarningRaised; evt.BuildStarted += onBuildStarted; evt.BuildFinished += onBuildFinished; }
/// <summary> /// Note with msbuild: /// Be careful - the onBuildStarted(i.e. all before onTargetStarted) is not safe for any unhandled exceptions! /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void onBuildStarted(object sender, BuildStartedEventArgs e) { try { // load with properties by default library = initializer.load(); attachCoreCommandListener(); library.Event.solutionOpened(pUnkReserved, 0); // yes, we're ready onPre(initializer.Properties.Targets); } catch(Exception ex) { debug("Error onBuildStarted: '{0}'", ex.Message); abort = true; } }
/// <summary> /// Initialize library /// </summary> /// <param name="loader"></param> /// <param name="dte2"></param> /// <param name="addIn"></param> private void init(ILoader loader, DTE2 dte2, AddIn addIn) { try { library = loader.load(dte2, addIn.SatelliteDllPath, dte2.RegistryRoot); log.info("Library: loaded from '{0}' :: v{1} [{2}] API: v{3} /'{4}':{5}", library.Dllpath, library.Version.Number.ToString(), library.Version.BranchSha1, library.Version.Bridge.Number.ToString(2), library.Version.BranchName, library.Version.BranchRevCount); coreCommand = new CoreCommand(library); coreCommand.attachCoreCommandListener(); updateBuildType(Environment.GetCommandLineArgs()); adviseEvents(); return; } catch (DllNotFoundException ex) { log.info(ex.Message); log.info(new String('.', 80)); log.info("How about:"); log.info(""); log.info("* Install vsSolutionBuildEvent as plugin for your Visual Studio v{0}", dte2.Version); log.info("* Or manually place the 'vsSolutionBuildEvent.dll' with dependencies into AddIn folder: '{0}\\'", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); log.info(""); log.info("See documentation for more details:"); log.info("- http://vssbe.r-eg.net"); log.info("- http://visualstudiogallery.msdn.microsoft.com/0d1dbfd7-ed8a-40af-ae39-281bfeca2334/"); log.info(""); log.info("Minimum requirements: vsSolutionBuildEvent.dll v{0}", loader.MinVersion.ToString()); log.info(new String('.', 80)); } catch (ReflectionTypeLoadException ex) { log.info(ex.ToString()); log.info(new String('.', 80)); foreach (FileNotFoundException le in ex.LoaderExceptions) { log.info("{2} {0}{3} {0}{0}{4} {0}{1}", Environment.NewLine, new String('~', 80), le.FileName, le.Message, le.FusionLog); } } catch (Exception ex) { log.info("Error with advising '{0}'", ex.ToString()); } termination(true); }
/// <summary> /// Initialize library /// </summary> /// <param name="loader"></param> /// <param name="dte2"></param> /// <param name="addIn"></param> private void init(ILoader loader, DTE2 dte2, AddIn addIn) { try { library = loader.load(dte2, addIn.SatelliteDllPath, dte2.RegistryRoot); log.info("Library: loaded from '{0}' :: v{1} [{2}] API: v{3} /'{4}':{5}", library.Dllpath, library.Version.Number.ToString(), library.Version.BranchSha1, library.Version.Bridge.Number.ToString(2), library.Version.BranchName, library.Version.BranchRevCount); coreCommand = new CoreCommand(library); coreCommand.attachCoreCommandListener(); updateBuildType(Environment.GetCommandLineArgs()); adviseEvents(); return; } catch(DllNotFoundException ex) { log.info(ex.Message); log.info(new String('.', 80)); log.info("How about:"); log.info(""); log.info("* Install vsSolutionBuildEvent as plugin for your Visual Studio v{0}", dte2.Version); log.info("* Or manually place the 'vsSolutionBuildEvent.dll' with dependencies into AddIn folder: '{0}\\'", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); log.info(""); log.info("See documentation for more details:"); log.info("- http://vssbe.r-eg.net"); log.info("- http://visualstudiogallery.msdn.microsoft.com/0d1dbfd7-ed8a-40af-ae39-281bfeca2334/"); log.info(""); log.info("Minimum requirements: vsSolutionBuildEvent.dll v{0}", loader.MinVersion.ToString()); log.info(new String('.', 80)); } catch(ReflectionTypeLoadException ex) { log.info(ex.ToString()); log.info(new String('.', 80)); foreach(FileNotFoundException le in ex.LoaderExceptions) { log.info("{2} {0}{3} {0}{0}{4} {0}{1}", Environment.NewLine, new String('~', 80), le.FileName, le.Message, le.FusionLog); } } catch(Exception ex) { log.info("Error with advising '{0}'", ex.ToString()); } termination(true); }