using Community.VisualStudio.Toolkit; using Microsoft.VisualStudio.Shell; using System.Drawing; using System.Threading.Tasks; using VberAdmin.Generating; using VberAdmin.Helpers; using VberAdmin.Models; using VberAdmin.WinForm; namespace VberAdmin.Commands; [Command(PackageIds.CmdV3)] internal sealed class CommandV3 : BaseCommand { protected override async Task ExecuteAsync(OleMenuCmdEventArgs e) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var dte = await Package.GetServiceAsync(typeof(EnvDTE.DTE)) as EnvDTE.DTE; if (dte == null) { await VS.MessageBox.ShowWarningAsync("未发现 [DTE] !"); return; } if (!await Helper.CheckFileAsync()) { return; } var generate = new Generator(dte, new FileCreateV3()); TemplateViewModel viewModel = generate.ViewModel; viewModel.WebName = viewModel.WebName.Replace(".Mvc", ""); VberForm form = new VberForm(viewModel); form.SetVersion("V2.1.3", Color.Blue); form.Show(); async void OnFormOnOnGeneratorCodeStart() { generate.ViewModel = form.ViewModel; dte.StatusBar.Text = "VberCodeGenerate:开始生成文件。"; await generate.ExecuteAsync(); dte.StatusBar.Text = "VberCodeGenerate:文件已成功添加到项目中。"; form.Hide(); form.Close(); await VS.MessageBox.ShowAsync("操作成功", $"文件已成功自动生成。"); } form.OnGeneratorCodeStart += OnFormOnOnGeneratorCodeStart; } }