Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Ward <ward.matt@gmail.com>2014-12-15 13:24:00 +0300
committerMatt Ward <ward.matt@gmail.com>2014-12-15 13:39:39 +0300
commitdce791ef396f0c1f606f2da8ffcec6a7965ff521 (patch)
treebbd351f8f1b190dc2abe8e4ddaa4d94b2d94ae8e /main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProject.cs
parent87e4bf89aeeb062a2dbbcdc60cf6b4d6fb524640 (diff)
[Core] Allow Target and Error elements to be read from MSBuild project
Allow Target elements in an MSBuild project to be read: <Target Name="MyTarget" BeforeTargets="PrepareForBuild"> </Target> Allow Error tasks inside a Target element to be read: <Target Name="MyTarget" BeforeTargets="PrepareForBuild"> <Error Condition="!Exists(MyTargets.targets')" Text="$([System.String]::Format('$(ErrorText)', 'MyTargets.targets'))" /> </Target>
Diffstat (limited to 'main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProject.cs')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProject.cs49
1 files changed, 49 insertions, 0 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProject.cs
index 2976287a16..bc122951c5 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProject.cs
@@ -418,6 +418,13 @@ namespace MonoDevelop.Projects.Formats.MSBuild
elemCache.Remove (grp.Element);
grp.Element.ParentNode.RemoveChild (grp.Element);
}
+
+ public IEnumerable<MSBuildTarget> Targets {
+ get {
+ foreach (XmlElement elem in doc.DocumentElement.SelectNodes ("tns:Target", XmlNamespaceManager))
+ yield return new MSBuildTarget (elem);
+ }
+ }
}
public class MSBuildObject
@@ -906,6 +913,48 @@ namespace MonoDevelop.Projects.Formats.MSBuild
}
}
+ public class MSBuildTarget: MSBuildObject
+ {
+ public MSBuildTarget (XmlElement elem): base (elem)
+ {
+ }
+
+ public string Name {
+ get { return EvaluatedElement.GetAttribute ("Name"); }
+ set { Element.SetAttribute ("Name", value); }
+ }
+
+ public IEnumerable<MSBuildTask> Tasks {
+ get {
+ foreach (XmlNode node in Element.ChildNodes) {
+ var elem = node as XmlElement;
+ if (MSBuildTask.IsTask (elem))
+ yield return new MSBuildTask (elem);
+ }
+ }
+ }
+ }
+
+ public class MSBuildTask: MSBuildObject
+ {
+ public static bool IsTask (XmlElement elem)
+ {
+ if (elem == null)
+ return false;
+
+ return elem.LocalName == "Error";
+ }
+
+ public MSBuildTask (XmlElement elem): base (elem)
+ {
+ }
+
+ public string Name {
+ get { return EvaluatedElement.GetAttribute ("Name"); }
+ set { Element.SetAttribute ("Name", value); }
+ }
+ }
+
public class MSBuildEvaluationContext: IExpressionContext
{
Dictionary<string,string> properties = new Dictionary<string, string> ();