Aurelia.DotNet.VSIX.Commands.GenerateAttribute.ExecuteAsync C# (CSharp) Method

ExecuteAsync() private method

This function is the callback used to execute the command when the menu item is clicked. See the constructor to see how the menu item is associated with this function using OleMenuCommandService service and MenuCommand class.
private ExecuteAsync ( object sender, EventArgs e ) : void
sender object Event sender.
e EventArgs Event args.
return void
        private async void ExecuteAsync(object sender, EventArgs e)
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
            var item = _dte.SelectedItems.Item(1);
            Helpers.DteHelpers.GetSelectionData(_dte, out var targetFile, out var projectFolderPath, out var projectFullName);
            var targetFolder = Path.GetDirectoryName(targetFile);

            if (string.IsNullOrEmpty(targetFolder) || !Directory.Exists(targetFolder))
                return;

            var selectedItem = item as ProjectItem;
            var selectedProject = item as Project;
            var project = selectedItem?.ContainingProject ?? selectedProject ?? DteHelpers.GetActiveProject(_dte);

            var root = Directory.GetParent(AureliaHelper.RootFolder).FullName.Replace(@"\", @"\\"); //escape for pregex
            var relativePath = Regex.Replace(targetFolder, root, "", RegexOptions.IgnoreCase).Substring(1); // remove starting slash
            var fileNameDialog = new FileNameDialog(relativePath)
            {
                Title = "Generate Attribute",
                IsGlobal = true,
                PreviewText = "Please enter the name of the attribute you would like to create. eg. RedBox"
            };

            fileNameDialog.GlobalChecked(targetFolder.ToLower() == AureliaHelper.GetResouceDirectory.ToLower() || targetFolder.ToLower() == AureliaHelper.GetAttributesDirectory.ToLower() || targetFile.ToLower().Equals(AureliaHelper.ResourceGlobalFile.ToLower()));

            var dialog = _dte.OpenDialog(fileNameDialog);
            if (!(dialog.ShowDialog() ?? false)) { return; }
            var elementName = dialog.Input;
            var templates = Template.GetTemplateFilesByType("attribute").ToList();
            targetFolder = dialog.IsGlobal ? AureliaHelper.GetAttributesDirectory : targetFolder;

            var filesToOpen = await Task.WhenAll(templates.Select(templateName => Template.GenerateTemplatesAsync(templateName, targetFolder, dialog.Input, dialog.IsGlobal)));
            filesToOpen.ToList().ForEach(fullFileName => VsShellUtilities.OpenDocument(package, fullFileName));


        }
    }