@@ -8,7 +8,7 @@ internal class ModInternalAssemblyResolver : IAssemblyResolver
88 {
99 private readonly Mod _mod ;
1010
11- private readonly Dictionary < string , string > _cachedAssemblyPaths = new ( ) ;
11+ private readonly Dictionary < AssemblyName , string > _cachedAssemblyPaths = new ( ) ;
1212
1313 public ModInternalAssemblyResolver ( Mod mod )
1414 {
@@ -18,19 +18,21 @@ public ModInternalAssemblyResolver(Mod mod)
1818
1919 public Assembly ProvideAssembly ( object sender , ResolveEventArgs args )
2020 {
21- if ( _mod . Assembly ? . FullName == args . Name )
21+ if ( _mod . Assembly != null && _mod . Assembly . GetName ( ) . MatchesRequest ( args , false ) )
2222 {
2323 return _mod . Assembly ;
2424 }
2525
26- if ( _cachedAssemblyPaths . TryGetValue ( args . Name , out var assemblyPath ) )
26+ foreach ( var assemblyName in _cachedAssemblyPaths . Keys )
2727 {
28- using var assemblyData = _mod . FileProxy . OpenFile ( assemblyPath ) ;
29- var assemblyBytes = new byte [ assemblyData . Length ] ;
30- assemblyData . Read ( assemblyBytes , 0 , assemblyBytes . Length ) ;
31- return Assembly . Load ( assemblyBytes ) ;
28+ if ( assemblyName . MatchesRequest ( args , false ) )
29+ {
30+ using var assemblyData = _mod . FileProxy . OpenFile ( _cachedAssemblyPaths [ assemblyName ] ) ;
31+ var assemblyBytes = new byte [ assemblyData . Length ] ;
32+ assemblyData . Read ( assemblyBytes , 0 , assemblyBytes . Length ) ;
33+ return Assembly . Load ( assemblyBytes ) ;
34+ }
3235 }
33-
3436 return null ;
3537 }
3638
@@ -40,7 +42,7 @@ private void CacheAssemblyPaths()
4042 {
4143 using var assemblyFile = _mod . FileProxy . OpenFile ( filePath ) ;
4244 using var assemblyDef = AssemblyDefinition . ReadAssembly ( assemblyFile , new ReaderParameters { ReadSymbols = false } ) ;
43- var fullName = assemblyDef . Name . ToString ( ) ;
45+ var fullName = new AssemblyName ( assemblyDef . Name . ToString ( ) ) ;
4446
4547 if ( ! _cachedAssemblyPaths . ContainsKey ( fullName ) )
4648 {
0 commit comments