public void AddReference(FrameContext context, string name) { Assembly assembly = null; try { assembly = Assembly.Load(name); } catch (FileNotFoundException notFound) { assembly = Assembly.LoadWithPartialName(name); } if (!references.Contains(assembly)) { references.Add(assembly); } ClrContext clrContext = null; if (context.HasVariable(ClrContext.FrameContextTokenName)) { clrContext = (ClrContext)context.GetVariable(ClrContext.FrameContextTokenName); } else { clrContext = new ClrContext(); } clrContext.AddAssemblyToReferences(assembly); context.AddVariable(ClrContext.FrameContextTokenName, clrContext); }
public PyModuleSpec find_spec(FrameContext context, string name, string import_path, PyModule target) { PyModuleSpec found = null; ClrContext clrContext = null; if (context.HasVariable(ClrContext.FrameContextTokenName)) { clrContext = (ClrContext)context.GetVariable(ClrContext.FrameContextTokenName); found = findInAssemblies(name, clrContext.AddedReferences, clrContext); if (found != null) { return(found); } } // If there isn't a CLR context yet, we still search the default assemblies and load from there. // Attach the context using the default modules as the added references. if (found == null) { found = findInAssemblies(name, DefaultAssemblies, clrContext); if (found != null) { if (clrContext == null) { clrContext = new ClrContext(); clrContext.AddAssembliesToReferences(DefaultAssemblies); context.AddVariable(ClrContext.FrameContextTokenName, clrContext); found.LoaderState = clrContext; } return(found); } } return(null); }