Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }