2 using System.Reflection;
3 using SysGen.BuildEngine.Attributes;
5 namespace SysGen.BuildEngine
7 public class TaskBuilder
9 private string _className;
10 private string _assemblyFileName;
11 private string _taskName;
13 public TaskBuilder(string className) : this(className, null) {
16 public TaskBuilder(string className, string assemblyFileName) {
17 _className = className;
18 _assemblyFileName = assemblyFileName;
20 // get task name from attribute
21 Assembly assembly = GetAssembly();
22 TaskNameAttribute taskNameAttribute = (TaskNameAttribute)
23 Attribute.GetCustomAttribute(assembly.GetType(ClassName), typeof(TaskNameAttribute));
25 _taskName = taskNameAttribute.FullTaskName; // Name;
28 public string ClassName
30 get { return _className; }
33 public string AssemblyFileName
35 get { return _assemblyFileName; }
38 public string TaskName
40 get { return _taskName; }
43 private Assembly GetAssembly() {
44 Assembly assembly = null;
45 if (AssemblyFileName == null) {
46 assembly = Assembly.GetExecutingAssembly();
48 //check to see if it is loaded already
49 Assembly [] ass = AppDomain.CurrentDomain.GetAssemblies();
50 for (int i = 0; i < ass.Length; i++){
52 if(ass[i].Location.Equals(AssemblyFileName)) {
57 // System.Reflection.Emit.Assembly have no location and will fail
62 assembly = Assembly.LoadFrom(AssemblyFileName);
67 public Task CreateTask()
69 return (Task)GetAssembly().CreateInstance(ClassName, true);