diff options
author | Vsevolod Kukol <sevoku@microsoft.com> | 2019-07-15 12:06:57 +0300 |
---|---|---|
committer | monojenkins <jo.shields+jenkins@xamarin.com> | 2019-07-15 18:26:37 +0300 |
commit | f5778969723f80b4323de63278253bac35ef97ae (patch) | |
tree | e29554220fcb33c69b14d341a1bf8a4b71dfcb01 /main | |
parent | 654420ac4730ad4d2d7d5b15e81f1a9cfaa63d80 (diff) |
[Ide] Fix error handling during project creation
Diffstat (limited to 'main')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs | 75 |
1 files changed, 38 insertions, 37 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs index e8e2e52f5c..41d24f6c9f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs @@ -679,45 +679,46 @@ namespace MonoDevelop.Ide.Projects }
dialog.CloseDialog (); - - if (ParentFolder != null)
- await IdeApp.ProjectOperations.SaveAsync (ParentFolder.ParentSolution);
- else
- await IdeApp.ProjectOperations.SaveAsync (processedTemplate.WorkspaceItems);
-
- CreateVersionControlItems ();
-
- if (OpenSolution) {
- DisposeExistingNewItems ();
- TemplateWizard wizard = wizardProvider.CurrentWizard;
- if (await OpenCreatedSolution (processedTemplate)) {
- var sol = IdeApp.Workspace.GetAllSolutions ().FirstOrDefault ();
- if (sol != null) {
- if (wizard != null)
- wizard.ItemsCreated (new [] { sol });
- InstallProjectTemplatePackages (sol);
- }
- }
- }
- else {
- // The item is not a solution being opened, so it is going to be added to
- // an existing item. In this case, it must not be disposed by the dialog.
- RunTemplateActions (processedTemplate);
- if (wizardProvider.HasWizard)
- wizardProvider.CurrentWizard.ItemsCreated (processedTemplate.WorkspaceItems);
- if (ParentFolder != null)
- InstallProjectTemplatePackages (ParentFolder.ParentSolution);
- }
-
- wizardProvider.Dispose ();
- IsNewItemCreated = true;
- UpdateDefaultSettings ();
- Gtk.Application.Invoke ((sender, args) => { + try { + if (ParentFolder != null) + await IdeApp.ProjectOperations.SaveAsync (ParentFolder.ParentSolution); + else + await IdeApp.ProjectOperations.SaveAsync (processedTemplate.WorkspaceItems); + + CreateVersionControlItems (); + + if (OpenSolution) { + DisposeExistingNewItems (); + TemplateWizard wizard = wizardProvider.CurrentWizard; + if (await OpenCreatedSolution (processedTemplate)) { + var sol = IdeApp.Workspace.GetAllSolutions ().FirstOrDefault (); + if (sol != null) { + if (wizard != null) + wizard.ItemsCreated (new [] { sol }); + InstallProjectTemplatePackages (sol); + } + } + } else { + // The item is not a solution being opened, so it is going to be added to + // an existing item. In this case, it must not be disposed by the dialog. + RunTemplateActions (processedTemplate); + if (wizardProvider.HasWizard) + wizardProvider.CurrentWizard.ItemsCreated (processedTemplate.WorkspaceItems); + if (ParentFolder != null) + InstallProjectTemplatePackages (ParentFolder.ParentSolution); + } + + wizardProvider.Dispose (); + IsNewItemCreated = true; + UpdateDefaultSettings (); + projectCreated.SetResult (true); - ProjectCreated?.Invoke (this, EventArgs.Empty); - });
- await projectCreated.Task; + await Runtime.RunInMainThread (() => ProjectCreated?.Invoke (this, EventArgs.Empty)); + } catch (Exception ex) { + projectCreated.SetException (ex); + throw; + } } public Task<bool> ProjectCreation => projectCreated?.Task; |