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(); }
internal static void Dispose() { _cachedMetadataLoadContextAssemblies = null; _cachedMetadataLoadContextAssembliesByNameNoExtension = null; _localAssemblyName = string.Empty; _metadataLoadContext?.Dispose(); _metadataLoadContext = null; }
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(); }
protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { universe?.Dispose(); universe = null; } disposedValue = true; } }
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()); }
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(); }
public void Dispose() { _metadataLoadContext.Dispose(); }