Esempio n. 1
0
        public static void ExtraDisposesIgnored()
        {
            MetadataLoadContext lc = new MetadataLoadContext(new EmptyCoreMetadataAssemblyResolver());

            lc.LoadFromByteArray(TestData.s_SimpleAssemblyImage);
            lc.Dispose();
            lc.Dispose();
            lc.Dispose();
        }
        internal static void AddBinderTypes(string directory, Dictionary <string, IBinderType> registrations)
        {
            var context = new MetadataLoadContext(GetAssemblyResolver(directory));
            var dirinfo = new DirectoryInfo(directory);

            foreach (var file in dirinfo.EnumerateFiles("*.dll"))
            {
                try
                {
                    if (ShouldCheckFile(file))
                    {
                        var reg = LoadAndCheckAssembly(context, file.FullName);
                        if (reg != null)
                        {
                            registrations.TryAdd(reg.Name, reg);
                        }
                    }
                }
                catch (Exception)
                {
                    // log
                }
            }

            context.Dispose();
        }
Esempio n. 3
0
        internal static void Dispose()
        {
            _cachedMetadataLoadContextAssemblies = null;
            _cachedMetadataLoadContextAssembliesByNameNoExtension = null;
            _localAssemblyName = string.Empty;

            _metadataLoadContext?.Dispose();
            _metadataLoadContext = null;
        }
Esempio n. 4
0
        public void LoadAndCheckAssembly_WithInValidPath_DoesNotReturnsBinderType()
        {
            var paths          = BuildPaths(null);
            var context        = new MetadataLoadContext(new PathAssemblyResolver(paths));
            var binderAssembly = Environment.CurrentDirectory + Path.DirectorySeparatorChar + "Steeltoe.Stream.FooBar.dll";
            var result         = DefaultBinderTypeRegistry.LoadAndCheckAssembly(context, binderAssembly);

            Assert.Null(result);
            context.Dispose();
        }
Esempio n. 5
0
    protected virtual void Dispose(bool disposing)
    {
        if (!disposedValue)
        {
            if (disposing)
            {
                universe?.Dispose();
                universe = null;
            }

            disposedValue = true;
        }
    }
Esempio n. 6
0
        public static void MetadataLoadContextApisAfterDispose()
        {
            MetadataLoadContext lc = new MetadataLoadContext(new EmptyCoreMetadataAssemblyResolver());

            lc.Dispose();

            Assert.Throws <ObjectDisposedException>(() => lc.LoadFromAssemblyName(new AssemblyName("Foo")));
            Assert.Throws <ObjectDisposedException>(() => lc.LoadFromAssemblyName("Foo"));
            Assert.Throws <ObjectDisposedException>(() => lc.LoadFromAssemblyPath("Foo"));
            Assert.Throws <ObjectDisposedException>(() => lc.LoadFromByteArray(TestData.s_SimpleAssemblyImage));
            Assert.Throws <ObjectDisposedException>(() => lc.LoadFromStream(new MemoryStream(TestData.s_SimpleAssemblyImage)));
            Assert.Throws <ObjectDisposedException>(() => lc.CoreAssembly);
            Assert.Throws <ObjectDisposedException>(() => lc.GetAssemblies());
        }
Esempio n. 7
0
        public void LoadAndCheckAssembly_WithDefaultPath_ReturnsBinderType()
        {
            var binderDir = GetSearchDirectories("TestBinder")[0];
            var paths     = BuildPaths(binderDir);

            var context        = new MetadataLoadContext(new PathAssemblyResolver(paths));
            var binderAssembly = binderDir + Path.DirectorySeparatorChar + "Steeltoe.Stream.TestBinder.dll";
            var result         = DefaultBinderTypeRegistry.LoadAndCheckAssembly(context, binderAssembly);

            Assert.Equal(binderAssembly, result.AssemblyPath);
            Assert.Matches(@"Steeltoe.Stream.TestBinder.Startup, Steeltoe.Stream.TestBinder, Version=[\d.]+, Culture=neutral, PublicKeyToken=null", result.ConfigureClass);
            Assert.Equal("testbinder", result.Name);
            context.Dispose();
        }
Esempio n. 8
0
 public void Dispose()
 {
     _metadataLoadContext.Dispose();
 }