CommandV4.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Drawing;
  2. using System.Threading.Tasks;
  3. using Community.VisualStudio.Toolkit;
  4. using Microsoft.VisualStudio.Shell;
  5. using VberAdmin.Generating;
  6. using VberAdmin.Helpers;
  7. using VberAdmin.Models;
  8. using VberAdmin.WinForm;
  9. namespace VberAdmin.Commands
  10. {
  11. [Command(PackageIds.CmdV4)]
  12. internal sealed class CommandV4 : BaseCommand<CommandV4>
  13. {
  14. protected override async Task ExecuteAsync(OleMenuCmdEventArgs e)
  15. {
  16. await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
  17. var dte = await Package.GetServiceAsync(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
  18. if (dte == null)
  19. {
  20. await VS.MessageBox.ShowWarningAsync("未发现 [DTE] !");
  21. return;
  22. }
  23. if (!await Helper.CheckFileAsync())
  24. {
  25. return;
  26. }
  27. var generate = new Generator(dte, new FileCreateV4());
  28. TemplateViewModel viewModel = generate.ViewModel;
  29. VberForm form = new VberForm(viewModel);
  30. form.SetVersion("V4(.NET6)", Color.DarkOrange);
  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. }
  45. }