1 // NAnt - A .NET build tool
2 // Copyright (C) 2001 Gerry Shaw
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 2 of the License, or
7 // (at your option) any later version.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 // Gerry Shaw (gerry_shaw@yahoo.com)
20 namespace SourceForge
.NAnt
{
23 using System
.Reflection
;
25 public class TaskBuilder
{
28 string _assemblyFileName
;
31 public TaskBuilder(string className
)
32 : this(className
, null) {
35 public TaskBuilder(string className
, string assemblyFileName
) {
36 _className
= className
;
37 _assemblyFileName
= assemblyFileName
;
39 // get task name from attribute
40 Assembly assembly
= GetAssembly();
41 TaskNameAttribute taskNameAttribute
= (TaskNameAttribute
) Attribute
.GetCustomAttribute(assembly
.GetType(ClassName
), typeof(TaskNameAttribute
));
42 _taskName
= taskNameAttribute
.Name
;
45 public string ClassName
{
46 get { return _className; }
49 public string AssemblyFileName
{
50 get { return _assemblyFileName; }
53 public string TaskName
{
54 get { return _taskName; }
57 private Assembly
GetAssembly() {
59 if (AssemblyFileName
== null) {
60 assembly
= Assembly
.GetExecutingAssembly();
62 assembly
= Assembly
.LoadFrom(AssemblyFileName
);
67 public Task
CreateTask(Project project
, Target target
) {
70 Assembly assembly
= GetAssembly();
72 // create instance (ignore case)
73 task
= (Task
) assembly
.CreateInstance(ClassName
, true);
76 task
.Project
= project
;