Browse Source

fix #279: Reference project items are UnknownProjectItems after creating a new project

pull/297/head
Siegfried Pammer 12 years ago
parent
commit
54d43aedbc
  1. 18
      src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs
  2. 6
      src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs
  3. 5
      src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs

18
src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs

@ -267,7 +267,7 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -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 @@ -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 @@ -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 @@ -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 @@ -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<IProjectServiceRaiseEvents>().RaiseProjectCreated(new ProjectEventArgs(project));
templateResults.NewProjects.Add(project);
success = true;
return project;
return true;
} finally {
if (project != null && !success)
project.Dispose();

6
src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs

@ -266,10 +266,8 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -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;
}
}

5
src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs

@ -45,10 +45,9 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -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;
}

Loading…
Cancel
Save