@@ -25,12 +25,12 @@ public sealed class LazyAssemblyLoader
25
25
internal const string ReadDynamicAssemblies = "window.Blazor._internal.readLazyAssemblies" ;
26
26
27
27
private readonly IJSRuntime _jsRuntime ;
28
- private readonly Dictionary < string , Assembly > _loadedAssemblyCache ;
28
+ private readonly HashSet < string > _loadedAssemblyCache ;
29
29
30
30
public LazyAssemblyLoader ( IJSRuntime jsRuntime )
31
31
{
32
32
_jsRuntime = jsRuntime ;
33
- _loadedAssemblyCache = AppDomain . CurrentDomain . GetAssemblies ( ) . ToDictionary ( assembly => assembly . GetName ( ) . Name + ".dll" , assembly => assembly ) ;
33
+ _loadedAssemblyCache = AppDomain . CurrentDomain . GetAssemblies ( ) . Select ( a => a . GetName ( ) . Name + ".dll" ) . ToHashSet ( ) ;
34
34
}
35
35
36
36
/// <summary>
@@ -51,7 +51,7 @@ public async Task<IEnumerable<Assembly>> LoadAssembliesAsync(IEnumerable<string>
51
51
return await LoadAssembliesInServerAsync ( assembliesToLoad ) ;
52
52
}
53
53
54
- private async Task < IEnumerable < Assembly > > LoadAssembliesInServerAsync ( IEnumerable < string > assembliesToLoad )
54
+ private Task < IEnumerable < Assembly > > LoadAssembliesInServerAsync ( IEnumerable < string > assembliesToLoad )
55
55
{
56
56
var loadedAssemblies = new List < Assembly > ( ) ;
57
57
@@ -67,7 +67,7 @@ private async Task<IEnumerable<Assembly>> LoadAssembliesInServerAsync(IEnumerabl
67
67
throw new InvalidOperationException ( $ "Unable to find the following assembly: { ex . FileName } . Make sure that the appplication is referencing the assemblies and that they are present in the output folder.") ;
68
68
}
69
69
70
- return await Task . FromResult ( loadedAssemblies ) ;
70
+ return Task . FromResult < IEnumerable < Assembly > > ( loadedAssemblies ) ;
71
71
}
72
72
73
73
private async Task < IEnumerable < Assembly > > LoadAssembliesInClientAsync ( IEnumerable < string > assembliesToLoad )
@@ -77,7 +77,7 @@ private async Task<IEnumerable<Assembly>> LoadAssembliesInClientAsync(IEnumerabl
77
77
// to see if it throws FileNotFound to ensure that an assembly hasn't been loaded
78
78
// between when the cache of loaded assemblies was instantiated in the constructor
79
79
// and the invocation of this method.
80
- var newAssembliesToLoad = assembliesToLoad . Except ( _loadedAssemblyCache . Keys ) ;
80
+ var newAssembliesToLoad = assembliesToLoad . Where ( assembly => ! _loadedAssemblyCache . Contains ( assembly ) ) ;
81
81
var loadedAssemblies = new List < Assembly > ( ) ;
82
82
83
83
var count = ( int ) await ( ( WebAssemblyJSRuntime ) _jsRuntime ) . InvokeUnmarshalled < string [ ] , object , object , Task < object > > (
@@ -105,7 +105,7 @@ private async Task<IEnumerable<Assembly>> LoadAssembliesInClientAsync(IEnumerabl
105
105
// into the default app context.
106
106
var loadedAssembly = AssemblyLoadContext . Default . LoadFromStream ( new MemoryStream ( assembly ) ) ;
107
107
loadedAssemblies . Add ( loadedAssembly ) ;
108
- _loadedAssemblyCache . Add ( loadedAssembly . GetName ( ) . Name + ".dll" , loadedAssembly ) ;
108
+ _loadedAssemblyCache . Add ( loadedAssembly . GetName ( ) . Name + ".dll" ) ;
109
109
}
110
110
111
111
return loadedAssemblies ;
0 commit comments