diff --git a/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs b/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs index fe0f465c7b..2c72c49656 100644 --- a/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs +++ b/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs @@ -267,7 +267,7 @@ namespace ICSharpCode.SharpDevelop.Templates #region Create new project from template //Show prompt, create files from template, create project, execute command, save project - public IProject CreateProject(ProjectTemplateResult templateResults, string defaultLanguage) + public bool CreateProject(ProjectTemplateResult templateResults, string defaultLanguage, ISolutionFolder target) { var projectCreateOptions = templateResults.Options; var parentSolution = templateResults.Options.Solution; @@ -283,7 +283,7 @@ namespace ICSharpCode.SharpDevelop.Templates MessageService.ShowError( StringParser.Parse("${res:ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.CantCreateProjectWithTypeError}", new StringTagPair("type", language))); - return null; + return false; } DirectoryName projectBasePath = projectCreateOptions.ProjectBasePath; @@ -335,7 +335,7 @@ namespace ICSharpCode.SharpDevelop.Templates new StringTagPair("projectLocation", projectLocation)), "${res:ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName}")) { - return null; //The user doesnt want to overwrite the project... + return false; //The user doesnt want to overwrite the project... } } @@ -408,10 +408,11 @@ namespace ICSharpCode.SharpDevelop.Templates #region Create Project try { + info.InitializeTypeSystem = false; project = languageinfo.CreateProject(info); } catch (ProjectLoadException ex) { MessageService.ShowError(ex.Message); - return null; + return false; } #endregion @@ -511,11 +512,18 @@ namespace ICSharpCode.SharpDevelop.Templates // Save project project.Save(); + // HACK : close and reload + var fn = project.FileName; + project.Dispose(); + ProjectLoadInformation loadInfo = new ProjectLoadInformation(parentSolution, fn, fn.GetFileNameWithoutExtension()); + project = SD.ProjectService.LoadProject(loadInfo); + target.Items.Add(project); + project.ProjectLoaded(); SD.GetRequiredService().RaiseProjectCreated(new ProjectEventArgs(project)); templateResults.NewProjects.Add(project); success = true; - return project; + return true; } finally { if (project != null && !success) project.Dispose(); diff --git a/src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs b/src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs index 49866cec75..4a24057d42 100644 --- a/src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs +++ b/src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs @@ -266,10 +266,8 @@ namespace ICSharpCode.SharpDevelop.Templates return null; } if (projectDescriptor != null) { - IProject project = projectDescriptor.CreateProject(result, languagename); - if (project != null) { - options.SolutionFolder.Items.Add(project); - } else { + bool success = projectDescriptor.CreateProject(result, languagename, options.SolutionFolder); + if (!success) { return null; } } diff --git a/src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs b/src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs index 6a97ec3fef..6740ba1a6c 100644 --- a/src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs +++ b/src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs @@ -45,10 +45,9 @@ namespace ICSharpCode.SharpDevelop.Templates return false; } foreach (ProjectDescriptor projectDescriptor in projectDescriptors) { - IProject newProject = projectDescriptor.CreateProject(templateResult, defaultLanguage); - if (newProject == null) + bool success = projectDescriptor.CreateProject(templateResult, defaultLanguage, parentFolder); + if (!success) return false; - parentFolder.Items.Add(newProject); } return true; }