public void FireOnBuildBegin(object sender, VisualStudioBuildEventArgs eventArgs)
        {
            _log.Info("OnBuildBegin");

            if (null != OnBuildBegin)
                OnBuildBegin(sender, eventArgs);
        }
        private void HandleBuild(object sender, VisualStudioBuildEventArgs e)
        {
            if (e.BuildAction == vsBuildAction.vsBuildActionClean ||
                e.BuildAction == vsBuildAction.vsBuildActionDeploy)
            {
                _log.InfoFormat("Build Action is Clean or Deploy.  No Code Generation will occur");
                return;
            }

            var sw = Stopwatch.StartNew();

            try
            {
                _log.InfoFormat("HandleBuild started.");

                _visualStudioCodeGenerator
                    .GenerateCode(
                        _codeGeneratorContextFactory.GenerateContext(s => s.GetValidPMixinFiles()))
                    .MapParallel(_responseFileWriter.WriteCodeGeneratorResponse);
            }
            catch (Exception exc)
            {
                _log.Error("Exception in HandleBuild", exc);
            }
            finally
            {
                _log.InfoFormat("HandleBuild Completed in [{0}] ms", sw.ElapsedMilliseconds);
            }
        }
        public void FireOnBuildDone(object sender, VisualStudioBuildEventArgs eventArgs)
        {
            _log.Info("OnBuildDone");

            if (null != OnBuildDone)
                OnBuildDone(sender, eventArgs);
        }