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

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

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

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

@ -52,6 +52,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
bool clearExistingImports; bool clearExistingImports;
List<Import> projectImports = new List<Import>(); List<Import> projectImports = new List<Import>();
string importsFailureMessage;
List<FileDescriptionTemplate> files = new List<FileDescriptionTemplate>(); List<FileDescriptionTemplate> files = new List<FileDescriptionTemplate>();
List<ProjectItem> projectItems = new List<ProjectItem>(); List<ProjectItem> projectItems = new List<ProjectItem>();
@ -188,6 +189,9 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
if (string.Equals(importsElement.GetAttribute("clear"), "true", StringComparison.OrdinalIgnoreCase)) { if (string.Equals(importsElement.GetAttribute("clear"), "true", StringComparison.OrdinalIgnoreCase)) {
clearExistingImports = true; clearExistingImports = true;
} }
if (importsElement.HasAttribute("failureMessage")) {
importsFailureMessage = importsElement.GetAttribute("failureMessage");
}
foreach (XmlElement importElement in ChildElements(importsElement)) { foreach (XmlElement importElement in ChildElements(importsElement)) {
TemplateLoadException.AssertAttributeExists(importElement, "Project"); TemplateLoadException.AssertAttributeExists(importElement, "Project");
projectImports.Add(new Import( projectImports.Add(new Import(
@ -292,10 +296,19 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
if (clearExistingImports) { if (clearExistingImports) {
MSBuildInternals.ClearImports(((MSBuildBasedProject)project).MSBuildProject); MSBuildInternals.ClearImports(((MSBuildBasedProject)project).MSBuildProject);
} }
foreach (Import projectImport in projectImports) { try {
((MSBuildBasedProject)project).MSBuildProject.AddNewImport(projectImport.Key, projectImport.Value); 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) { if (projectProperties.Count > 0) {

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

@ -282,7 +282,11 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
return combineDescriptor.CreateSolution(projectCreateInformation, this.languagename); return combineDescriptor.CreateSolution(projectCreateInformation, this.languagename);
} else if (projectDescriptor != null) { } else if (projectDescriptor != null) {
projectCreateInformation.Solution = new Solution(); 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 { } else {
return null; return null;
} }

Loading…
Cancel
Save