public bool RunCommand(CommandReceiver runner) { log.Debug("Running LoadAssemblies command."); log.InfoFormat("Project File: {0}", ArchAngelProjectFileLocation); log.InfoFormat("Current File Path: {0}", CurrentFilePath); log.Info("The following assemblies were added to the AssemblySearchPaths:"); if (log.IsInfoEnabled) foreach (var path in AssemblySearchPaths) log.Info(path); SharedData.AddAssemblySearchPaths(AssemblySearchPaths); runner.CurrentProject = new WorkbenchProject(); string fakeProjectDirectory = PathHelper.GetTempFilePathFor("ArchAngel", ArchAngelProjectFileLocation, ComponentKey.Debugger_FakeProjectDirectory); IVerificationIssueSolver solver = new CustomVerificationIssueSolver("", fakeProjectDirectory); bool result = runner.CurrentProject.Load(ArchAngelProjectFileLocation, solver, true, null); if (result) { runner.Loaded = true; return runner.Loaded; } log.ErrorFormat("Could not load the project: {0}", solver.GetValidTemplateFilePath("", "")); throw new Exception("Could not load the project."); /* foreach (string assemblyFullname in AssemblyFullNames) { Assembly assembly = Assembly.LoadFrom(assemblyFullname); if (ProviderInfo.IsProvider(assembly)) { // Unzip .aaproj file XmlDocument doc = new XmlDocument(); doc.Load(projectFilename); NodeProcessor proc = new NodeProcessor(doc.DocumentElement); string folder = proc.GetString("Folder"); tempFolder = RelativePaths.RelativeToAbsolutePath(Path.GetDirectoryName(projectFilename), folder); string tempFolder = PathHelper.GetTempFilePathFor("ArchAngel", ArchAngelProjectFileLocation, ComponentKey.Debugger_LoadAssemblies); Directory.CreateDirectory(tempFolder); Utility.UnzipFile(ArchAngelProjectFileLocation, tempFolder); string zipFile = tempFolder.PathSlash(assembly.GetName().Name.Replace(".", "_") + "_data.zip"); string tempProviderFolder = Path.Combine(Path.GetTempPath(), assembly.GetName().Name.Replace(".", "_") + "Temp"); if (Directory.Exists(tempProviderFolder)) { Utility.DeleteDirectoryBrute(tempProviderFolder); } Directory.CreateDirectory(tempProviderFolder); if (File.Exists(zipFile)) { Utility.UnzipFile(zipFile, tempProviderFolder); ProviderInfo providerInfo = ProviderInfo.GetProviderInfo(assembly); if (providerInfo == null) { throw new Exception("ProviderInfo type not found in assembly: " + assembly.GetName().Name); } providerInfo.Open(tempProviderFolder); runner.CurrentProvider = providerInfo; runner.Loaded = true; } //else // throw new Exception("Could not find the Provider data zip file in the temp directory: " + zipFile); } //runner.Loaded = true; } */ }
public bool RunCommand(CommandReceiver runner) { if (runner.Loaded == false) throw new Exception("CommandReceiver not loaded yet"); SharedData.CurrentProject = runner.CurrentProject; Assembly assembly = Assembly.LoadFrom(AssemblyFilename); log.DebugFormat("Loading Type {0}.{1}", Namespace, Classname); Type generatedObjectType = assembly.GetType(Namespace + "." + Classname); if (generatedObjectType == null) throw new Exception("Could not find test class"); log.DebugFormat("Loader State: {0}", runner.CurrentProject.TemplateLoader != null ? "Loaded" : "Not Loaded"); runner.CurrentProject.LoadTemplate(AssemblyFilename); System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.LoadXml(AaprojXml); runner.CurrentProject.InitFromDesignerProjectXml(doc); log.DebugFormat("Loader State: {0}", runner.CurrentProject.TemplateLoader != null ? "Loaded" : "Not Loaded"); runner.CurrentProject.FillProviders(); SetUserOptions(assembly); runner.CurrentProject.FillVirtualProperties(); log.DebugFormat("Loading Function {0}", FunctionName); MethodInfo method = generatedObjectType.GetMethod(FunctionName); ThreadStart start = delegate { Thread.Sleep(1000); object instance = IsStaticMethod ? null : assembly.CreateInstance(Namespace + "." + Classname); string obj = method.Invoke(instance, Arguments.ToArray(runner.CurrentProject.Providers)).ToString(); #line 16707564 Console.WriteLine(obj); #line default }; Thread thread = new Thread(start); thread.Start(); return true; }
public bool RunCommand(CommandReceiver c) { DebugProcessMain.EndDebugProcess.Set(); return false; }