Browse Source

Fix #312 - Complex project templates are not correctly built.

pull/442/head
Matt Ward 11 years ago
parent
commit
6cba48a75e
  1. 15
      src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs

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

@ -59,6 +59,7 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -59,6 +59,7 @@ namespace ICSharpCode.SharpDevelop.Templates
string name;
string defaultPlatform;
string relativePath;
/// <summary>
/// The language of the project.
@ -92,6 +93,9 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -92,6 +93,9 @@ namespace ICSharpCode.SharpDevelop.Templates
} else {
name = "${ProjectName}";
}
if (element.HasAttribute("directory")) {
relativePath = element.GetAttribute("directory");
}
languageName = element.GetAttribute("language");
if (string.IsNullOrEmpty(languageName)) {
ProjectTemplateImpl.WarnAttributeMissing(element, "language");
@ -301,7 +305,7 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -301,7 +305,7 @@ namespace ICSharpCode.SharpDevelop.Templates
return false;
}
DirectoryName projectBasePath = projectCreateOptions.ProjectBasePath;
DirectoryName projectBasePath = GetProjectBasePath(projectCreateOptions);
string newProjectName = StringParser.Parse(name, new StringTagPair("ProjectName", projectCreateOptions.ProjectName));
Directory.CreateDirectory(projectBasePath);
FileName projectLocation = projectBasePath.CombineFile(newProjectName + descriptor.ProjectFileExtension);
@ -546,6 +550,15 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -546,6 +550,15 @@ namespace ICSharpCode.SharpDevelop.Templates
}
}
DirectoryName GetProjectBasePath(ProjectTemplateOptions projectCreateOptions)
{
if (String.IsNullOrEmpty(relativePath)) {
return projectCreateOptions.ProjectBasePath;
}
string relativeBasePath = StringParser.Parse(relativePath, new StringTagPair("ProjectName", projectCreateOptions.ProjectName));
return projectCreateOptions.ProjectBasePath.CombineDirectory(relativeBasePath);
}
void RunPreCreateActions(ProjectCreateInformation projectCreateInformation)
{
foreach (var action in preCreateActions) {

Loading…
Cancel
Save