static int Main(string[] args) { AppDomain.CurrentDomain.AssemblyResolve += (sender, eventArgs) => { var assemblyName = new AssemblyName(eventArgs.Name).Name; string resourceName = assemblyName + ".dll"; using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (stream == null) { return(null); } var assemblyData = new byte[stream.Length]; stream.Read(assemblyData, 0, assemblyData.Length); return(Assembly.Load(assemblyData)); } }; //LibZResolver.Startup(() => { // string runningPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string directiveXml; string contentRootPath = null; if (args != null && args.Length > 0) { directiveXml = args[0]; contentRootPath = args[1]; } else { var dirInfo = new DirectoryInfo(runningPath); dirInfo = dirInfo.Parent.Parent.Parent.Parent; //@TODO: This should be changed into a loop that many contents can be run directiveXml = Path.Combine(dirInfo.FullName, "AbstractionContent", "absbuilder", "In", "Content_v1_0", "AbstractionBuilderContent_v1_0.xml"); } Console.WriteLine("Using {0} as command file.", directiveXml); AbstractionEnvironment env = new AbstractionEnvironment(runningPath, directiveXml, contentRootPath); Runner runner = new Runner(env); runner.Execution(); } //); return(0); }
// --- this is the method that you invoke ------------ // Passes also AbstractionEnvironment as a first argument to caller public static Object InvokeMethod(string AssemblyName, string ClassName, string MethodName, AbstractionEnvironment env, Object[] args) { Object[] allArgs = new Object[] { env, args }; return(InvokeMethod(AssemblyName, ClassName, MethodName, allArgs)); }
public Runner(AbstractionEnvironment env) { _env = env; }