+2009-03-26 Jonathan Chambers <joncham@gmail.com>
+
+ * TaskDatabase.cs (RegisterTask): Search for class by name
+ if task was not found using GetType (which uses namespace).
+
2009-02-26 Ankit Jain <jankit@novell.com>
* Target.cs: Handle target with no tasks. Log errors.
assembly = Assembly.Load (assemblyLoadInfo.AssemblyNameString);
Type type = assembly.GetType (classname);
+ if (type == null) {
+ // search for matching class in case namespace was not used
+ foreach (Type exportedType in assembly.GetExportedTypes()) {
+ if (exportedType.Name == classname) {
+ type = exportedType;
+ break;
+ }
+ }
+ }
typesByFullName.Add (classname, type);
typesByShortName [GetShortName (classname)] = type;
}
Assert.AreEqual ("ItemName", project.EvaluatedItems [0].Name, "A1");
Assert.AreEqual ("some_text", project.EvaluatedItems [0].FinalItemSpec, "A2");
- }
+ }
+
+ [Test]
+ public void TestTaskInNamespace()
+ {
+ Engine engine;
+ Project project;
+
+ string documentString = @"
+ <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
+ <UsingTask
+ AssemblyFile='Test\resources\TestTasks.dll'
+ TaskName='NamespacedOutputTestTask'
+ />
+ <Target Name='T'>
+ <NamespacedOutputTestTask />
+ </Target>
+ </Project>
+ ";
+
+ engine = new Engine(Consts.BinPath);
+ project = engine.CreateNewProject();
+ project.LoadXml(documentString);
+
+ Target[] t = new Target[1];
+ BuildTask[] bt;
+ project.Targets.CopyTo(t, 0);
+ bt = GetTasks(t[0]);
+
+ bt[0].AddOutputItem("Property", "ItemName");
+ project.Build("T");
+
+ Assert.AreEqual("ItemName", project.EvaluatedItems[0].Name, "A1");
+ Assert.AreEqual("some_text", project.EvaluatedItems[0].FinalItemSpec, "A2");
+ }
[Test]
public void TestAddOutputProperty1 ()
+2009-03-26 Jonathan Chambers <joncham@gmail.com>
+
+ * BuildTaskTest.cs (TestTaskInNamespace): Add test for Task in namespace.
+
2009-02-24 Ankit Jain <jankit@novell.com>
* UsingTaskTest.cs (TestLazyLoad{1,2,3}): New.
+2009-03-26 Jonathan Chambers <joncham@gmail.com>
+
+ * TestTasks.cs (NamespacedOutputTestTask): New.
+
2009-02-24 Ankit Jain <jankit@novell.com>
* TestTasks.cs (Another.SameTask): New.
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
+namespace Foo
+{
+ public class NamespacedOutputTestTask : Task
+ {
+ public override bool Execute()
+ {
+ return true;
+ }
+
+ [Output]
+ public string Property
+ {
+ get { return "some_text"; }
+ }
+ }
+}
+
public class OutputTestTask : Task {
public override bool Execute ()
{