Browse Source

Fixed SD2-524: Wildcards in MSBuild custom items are not interpreted

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1360 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
f91811fe97
  1. 8
      src/Main/Base/Project/Src/Project/Items/FileProjectItem.cs
  2. 8
      src/Main/Base/Project/Src/Project/Items/ImportProjectItem.cs
  3. 13
      src/Main/Base/Project/Src/Project/Items/ProjectItem.cs
  4. 8
      src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs
  5. 10
      src/Main/Base/Project/Src/Project/Items/UnknownProjectItem.cs
  6. 21
      src/Main/Base/Project/Src/Project/MSBuildProject.cs
  7. 8
      src/Main/Base/Project/Src/Project/WebReferenceUrl.cs

8
src/Main/Base/Project/Src/Project/Items/FileProjectItem.cs

@ -131,5 +131,13 @@ namespace ICSharpCode.SharpDevelop.Project
{ {
this.type = type; this.type = type;
} }
public override ProjectItem Clone()
{
ProjectItem n = new FileProjectItem(this.Project, this.ItemType);
n.Include = this.Include;
this.CopyExtraPropertiesTo(n);
return n;
}
} }
} }

8
src/Main/Base/Project/Src/Project/Items/ImportProjectItem.cs

@ -23,5 +23,13 @@ namespace ICSharpCode.SharpDevelop.Project
return ItemType.Import; return ItemType.Import;
} }
} }
public override ProjectItem Clone()
{
ImportProjectItem n = new ImportProjectItem(this.Project);
n.Include = this.Include;
this.CopyExtraPropertiesTo(n);
return n;
}
} }
} }

13
src/Main/Base/Project/Src/Project/Items/ProjectItem.cs

@ -42,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Project
BootstrapperFile BootstrapperFile
} }
public abstract class ProjectItem : LocalizedObject, IDisposable public abstract class ProjectItem : LocalizedObject, IDisposable, ICloneable
{ {
string include; string include;
PropertyGroup properties = new PropertyGroup(); PropertyGroup properties = new PropertyGroup();
@ -82,6 +82,17 @@ namespace ICSharpCode.SharpDevelop.Project
item.Include = newInclude; item.Include = newInclude;
} }
public virtual ProjectItem Clone()
{
// TODO: Make me abstract in SD 2.1
throw new NotSupportedException();
}
object ICloneable.Clone()
{
return this.Clone();
}
[Browsable(false)] [Browsable(false)]
public PropertyGroup Properties { public PropertyGroup Properties {
get { get {

8
src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs

@ -169,5 +169,13 @@ namespace ICSharpCode.SharpDevelop.Project
return null; return null;
} }
public override ProjectItem Clone()
{
ProjectItem n = new ReferenceProjectItem(this.Project);
n.Include = this.Include;
this.CopyExtraPropertiesTo(n);
return n;
}
} }
} }

10
src/Main/Base/Project/Src/Project/Items/UnknownProjectItem.cs

@ -13,7 +13,7 @@ using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Project namespace ICSharpCode.SharpDevelop.Project
{ {
/// <summary> /// <summary>
/// Description of ReferenceProjectItem. /// A project item whose type is not known by SharpDevelop.
/// </summary> /// </summary>
public class UnknownProjectItem : ProjectItem public class UnknownProjectItem : ProjectItem
{ {
@ -35,5 +35,13 @@ namespace ICSharpCode.SharpDevelop.Project
{ {
this.tag = tag; this.tag = tag;
} }
public override ProjectItem Clone()
{
ProjectItem n = new UnknownProjectItem(this.Project, this.Tag);
n.Include = this.Include;
this.CopyExtraPropertiesTo(n);
return n;
}
} }
} }

21
src/Main/Base/Project/Src/Project/MSBuildProject.cs

@ -117,6 +117,7 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
} }
ExpandWildcards();
string userSettingsFileName = projectFileName + ".user"; string userSettingsFileName = projectFileName + ".user";
if (File.Exists(userSettingsFileName)) { if (File.Exists(userSettingsFileName)) {
@ -139,6 +140,26 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
void ExpandWildcards()
{
for (int i = 0; i < items.Count; i++) {
ProjectItem item = items[i];
if (item.Include.IndexOf('*') >= 0 && item is FileProjectItem) {
items.RemoveAt(i--);
try {
string path = Path.Combine(this.Directory, Path.GetDirectoryName(item.Include));
foreach (string file in System.IO.Directory.GetFiles(path, Path.GetFileName(item.Include))) {
ProjectItem n = item.Clone();
n.Include = FileUtility.GetRelativePath(this.Directory, file);
items.Insert(++i, n);
}
} catch (Exception ex) {
MessageService.ShowError(ex, "Error expanding wildcards in " + item.Include);
}
}
}
}
void LoadPropertyGroup(XmlReader reader, bool isUserFile) void LoadPropertyGroup(XmlReader reader, bool isUserFile)
{ {
string condition = reader.GetAttribute("Condition"); string condition = reader.GetAttribute("Condition");

8
src/Main/Base/Project/Src/Project/WebReferenceUrl.cs

@ -116,5 +116,13 @@ namespace ICSharpCode.SharpDevelop.Project
{ {
UrlBehavior = "Static"; UrlBehavior = "Static";
} }
public override ProjectItem Clone()
{
ProjectItem n = new WebReferenceUrl(this.Project);
n.Include = this.Include;
this.CopyExtraPropertiesTo(n);
return n;
}
} }
} }

Loading…
Cancel
Save