CommandV2.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Community.VisualStudio.Toolkit;
  2. using Microsoft.VisualStudio.Shell;
  3. using System.Drawing;
  4. using System.Threading.Tasks;
  5. using VberAdmin.Generating;
  6. using VberAdmin.Helpers;
  7. using VberAdmin.Models;
  8. using VberAdmin.WinForm;
  9. namespace VberAdmin.Commands;
  10. [Command(PackageIds.CmdV2)]
  11. internal sealed class CommandV2 : BaseCommand<CommandV2>
  12. {
  13. protected override async Task ExecuteAsync(OleMenuCmdEventArgs e)
  14. {
  15. await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
  16. var dte = await Package.GetServiceAsync(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
  17. if (dte == null)
  18. {
  19. await VS.MessageBox.ShowWarningAsync("未发现 [DTE] !");
  20. return;
  21. }
  22. if (!await Helper.CheckFileAsync())
  23. {
  24. return;
  25. }
  26. var generate = new Generator(dte, new FileCreateV2());
  27. TemplateViewModel viewModel = generate.ViewModel;
  28. viewModel.WebName = viewModel.WebName.Replace(".Mvc", "");
  29. VberForm form = new VberForm(viewModel);
  30. form.SetVersion("V2.1.3", Color.BurlyWood);
  31. form.Show();
  32. async void OnFormOnOnGeneratorCodeStart()
  33. {
  34. generate.ViewModel = form.ViewModel;
  35. dte.StatusBar.Text = "VberCodeGenerate:开始生成文件。";
  36. await generate.ExecuteAsync();
  37. dte.StatusBar.Text = "VberCodeGenerate:文件已成功添加到项目中。";
  38. form.Hide();
  39. form.Close();
  40. await VS.MessageBox.ShowAsync("操作成功", $"文件已成功自动生成。");
  41. }
  42. form.OnGeneratorCodeStart += OnFormOnOnGeneratorCodeStart;
  43. }
  44. }