protected override void Initialize() { base.Initialize(); _dte = GetService(typeof(DTE)) as DTE2; _activityLogger = new ActivityLogger(GetService(typeof(SVsActivityLog)) as IVsActivityLog); OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if (null != mcs) { CommandID cmdId = new CommandID(GuidList.guidTemplatePackCmdSet, (int)PkgCmdIDList.cmdidMyCommand); OleMenuCommand button = new OleMenuCommand(ButtonClicked, cmdId); button.BeforeQueryStatus += button_BeforeQueryStatus; mcs.AddCommand(button); CommandID menuCommandID = new CommandID(GuidList.guidMenuOptionsCmdSet, (int)PkgCmdIDList.SWMenuGroup); OleMenuCommand menuItem = new OleMenuCommand(OpenSettings, menuCommandID); mcs.AddCommand(menuItem); } System.Threading.Tasks.Task.Run(async () => { await System.Threading.Tasks.Task.Delay(100); try { new DynamicTemplateBuilder(_dte, _activityLogger).ProcessTemplates(); } catch (Exception ex) { _activityLogger.Error(ex.ToString()); _dte.StatusBar.Text = @"An error occured while updating templates, check the activity log"; // Leave this for now until we are sure activity logger above works well System.Windows.MessageBox.Show(ex.ToString()); } }); }
/// <summary> /// If dte is null it will be ignored /// If activityLogger is null it will be ignored. /// </summary> /// <param name="dte"></param> public DynamicTemplateBuilder(DTE2 dte, ActivityLogger activityLogger) { // Note: using extensions install dir causes max path issues //this.SourceRoot = Path.Combine(SideWaffleInstallDir, @"DynamicTemplates\sources\"); //this.BaseIntermediateOutputPath = Path.Combine(SideWaffleInstallDir, @"DynamicTemplates\baseintout\"); //this.OutputPath = Path.Combine(SideWaffleInstallDir, @"DynamicTemplates\output\"); var verstr = new AssemblyName(Assembly.GetExecutingAssembly().FullName).Version.ToString(); var rootDir = Environment.ExpandEnvironmentVariables( string.Format(@"%localappdata%\LigerShark\SideWaffle\DynamicTemplates\{0}\", verstr)); this.RootDirectory = Path.GetFullPath(rootDir); this.SourceRoot = Path.Combine(rootDir, @"sources\"); this.BaseIntermediateOutputPath = Path.Combine(rootDir, @"baseintout\"); this.OutputPath = Path.Combine(rootDir, @"output\"); this.Dte = dte; this.ActivityLog = activityLogger; }