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 @@ -131,5 +131,13 @@ namespace ICSharpCode.SharpDevelop.Project
{
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 @@ -23,5 +23,13 @@ namespace ICSharpCode.SharpDevelop.Project
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 @@ -42,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Project
BootstrapperFile
}
public abstract class ProjectItem : LocalizedObject, IDisposable
public abstract class ProjectItem : LocalizedObject, IDisposable, ICloneable
{
string include;
PropertyGroup properties = new PropertyGroup();
@ -82,6 +82,17 @@ namespace ICSharpCode.SharpDevelop.Project @@ -82,6 +82,17 @@ namespace ICSharpCode.SharpDevelop.Project
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)]
public PropertyGroup Properties {
get {

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

@ -169,5 +169,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -169,5 +169,13 @@ namespace ICSharpCode.SharpDevelop.Project
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; @@ -13,7 +13,7 @@ using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Description of ReferenceProjectItem.
/// A project item whose type is not known by SharpDevelop.
/// </summary>
public class UnknownProjectItem : ProjectItem
{
@ -35,5 +35,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -35,5 +35,13 @@ namespace ICSharpCode.SharpDevelop.Project
{
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 @@ -117,6 +117,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
ExpandWildcards();
string userSettingsFileName = projectFileName + ".user";
if (File.Exists(userSettingsFileName)) {
@ -139,6 +140,26 @@ namespace ICSharpCode.SharpDevelop.Project @@ -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)
{
string condition = reader.GetAttribute("Condition");

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

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

Loading…
Cancel
Save