Browse Source

Fixed forum-14286: exceptions thrown when trying to create WPF application without .NET Framework 3.0 installed.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2259 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
ff2a4f26f0
  1. 2
      data/templates/project/CSharp/WPFApplication.xpt
  2. 2
      data/templates/project/CSharp/WPFNavigationApplication.xpt
  3. 19
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs
  4. 6
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

2
data/templates/project/CSharp/WPFApplication.xpt

@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
<OutputType>WinExe</OutputType>
</PropertyGroup>
<Imports>
<Imports failureMessage="Please ensure the .NET Framework 3.0 is installed on your machine!">
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
</Imports>

2
data/templates/project/CSharp/WPFNavigationApplication.xpt

@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
<OutputType>WinExe</OutputType>
</PropertyGroup>
<Imports>
<Imports failureMessage="Please ensure the .NET Framework 3.0 is installed on your machine!">
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
</Imports>

19
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs

@ -52,6 +52,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -52,6 +52,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
bool clearExistingImports;
List<Import> projectImports = new List<Import>();
string importsFailureMessage;
List<FileDescriptionTemplate> files = new List<FileDescriptionTemplate>();
List<ProjectItem> projectItems = new List<ProjectItem>();
@ -188,6 +189,9 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -188,6 +189,9 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
if (string.Equals(importsElement.GetAttribute("clear"), "true", StringComparison.OrdinalIgnoreCase)) {
clearExistingImports = true;
}
if (importsElement.HasAttribute("failureMessage")) {
importsFailureMessage = importsElement.GetAttribute("failureMessage");
}
foreach (XmlElement importElement in ChildElements(importsElement)) {
TemplateLoadException.AssertAttributeExists(importElement, "Project");
projectImports.Add(new Import(
@ -292,10 +296,19 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -292,10 +296,19 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
if (clearExistingImports) {
MSBuildInternals.ClearImports(((MSBuildBasedProject)project).MSBuildProject);
}
foreach (Import projectImport in projectImports) {
((MSBuildBasedProject)project).MSBuildProject.AddNewImport(projectImport.Key, projectImport.Value);
try {
foreach (Import projectImport in projectImports) {
((MSBuildBasedProject)project).MSBuildProject.AddNewImport(projectImport.Key, projectImport.Value);
}
((MSBuildBasedProject)project).CreateItemsListFromMSBuild();
} catch (MSBuild.InvalidProjectFileException ex) {
if (string.IsNullOrEmpty(importsFailureMessage)) {
MessageService.ShowError("Error creating project:\n" + ex.Message);
} else {
MessageService.ShowError(importsFailureMessage + "\n\n" + ex.Message);
}
return null;
}
((MSBuildBasedProject)project).CreateItemsListFromMSBuild();
}
if (projectProperties.Count > 0) {

6
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

@ -282,7 +282,11 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -282,7 +282,11 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
return combineDescriptor.CreateSolution(projectCreateInformation, this.languagename);
} else if (projectDescriptor != null) {
projectCreateInformation.Solution = new Solution();
return projectDescriptor.CreateProject(projectCreateInformation, this.languagename).FileName;
IProject project = projectDescriptor.CreateProject(projectCreateInformation, this.languagename);
if (project != null)
return project.FileName;
else
return null;
} else {
return null;
}

Loading…
Cancel
Save