internal void SetUp(string className, MigrationContext context)
{
CodeNamespace ns = new CodeNamespace("__MigrationPlan__");
foreach (ScriptImport si in _imports)
{
ns.Imports.Add(new CodeNamespaceImport(si.Namespace));
}
ns.Types.Add(GetTypeDeclaration(className));
CodeCompileUnit unit = new CodeCompileUnit();
unit.Namespaces.Add(ns);
CompilerResults results = Compile(context, unit);
if (0 == results.Errors.Count)
{
context.Trace("script compiled successfully.");
Assembly assembly = results.CompiledAssembly;
Type type = assembly.GetType(string.Format("__MigrationPlan__.{0}", className), true);
Activator.CreateInstance(type, new object[] { context });
}
else
{
context.Trace("{0} script compilation error(s)!", results.Errors.Count);
foreach (CompilerError error in results.Errors)
{
context.Trace(error.ToString());
}
throw new ApplicationException(results.Errors[0].ToString());
}
}