@@ -312,54 +312,47 @@ public DependencyContext Build(string[] userRuntimeAssemblies = null)
312
312
* libraryCandidatesForRemoval if it isn't already there
313
313
* Repeat 3 until libraryCandidatesForRemoval is empty
314
314
*/
315
- var references = runtimeLibraries . ToDictionary ( lib => lib . Library . Name , lib => lib ) ;
315
+ var libraries = runtimeLibraries . ToDictionary ( lib => lib . Library . Name , lib => lib ) ;
316
316
foreach ( var reference in runtimeLibraries )
317
317
{
318
318
foreach ( var dependency in reference . Library . Dependencies )
319
319
{
320
- if ( references . TryGetValue ( dependency . Name , out var dep ) )
320
+ if ( libraries . TryGetValue ( dependency . Name , out var dep ) )
321
321
{
322
322
dep . Dependents . Add ( reference . Library . Name ) ;
323
323
}
324
324
}
325
325
}
326
326
327
- var unprocessedReferences = runtimeLibraries . ToHashSet ( ) ;
328
- HashSet < ModifiableRuntimeLibrary > temp = new ( ) ;
329
- while ( unprocessedReferences . Any ( ) )
327
+ var unprocessedLibraries = runtimeLibraries . ToHashSet ( ) ;
328
+ while ( unprocessedLibraries . Any ( ) )
330
329
{
331
- var lib = unprocessedReferences . First ( ) ;
332
- unprocessedReferences . Remove ( lib ) ;
330
+ var lib = unprocessedLibraries . First ( ) ;
331
+ unprocessedLibraries . Remove ( lib ) ;
333
332
334
333
if ( lib . Library . RuntimeAssemblyGroups . Count == 0 && lib . Library . NativeLibraryGroups . Count == 0 && lib . Library . ResourceAssemblies . Count == 0 )
335
334
{
336
- if ( lib . Library . Dependencies . All ( d => ! references . TryGetValue ( d . Name , out var dependency ) || dependency . Dependents . Count > 1 ) )
335
+ if ( lib . Library . Dependencies . All ( d => ! libraries . TryGetValue ( d . Name , out var dependency ) || dependency . Dependents . Count > 1 ) )
337
336
{
338
337
runtimeLibraries . Remove ( lib ) ;
339
- references . Remove ( lib . Library . Name ) ;
338
+ libraries . Remove ( lib . Library . Name ) ;
340
339
foreach ( var dependency in lib . Library . Dependencies )
341
340
{
342
- if ( references . TryGetValue ( dependency . Name , out ModifiableRuntimeLibrary ? value ) )
341
+ if ( libraries . TryGetValue ( dependency . Name , out ModifiableRuntimeLibrary ? value ) )
343
342
{
344
343
value . Dependents . Remove ( lib . Library . Name ) ;
345
344
}
346
345
}
347
346
348
347
foreach ( var dependent in lib . Dependents )
349
348
{
350
- if ( references . TryGetValue ( dependent , out var dep ) )
349
+ if ( libraries . TryGetValue ( dependent , out var dep ) )
351
350
{
352
- temp . Add ( dep ) ;
351
+ unprocessedLibraries . Add ( dep ) ;
353
352
}
354
353
}
355
354
}
356
355
}
357
-
358
- if ( ! unprocessedReferences . Any ( ) )
359
- {
360
- unprocessedReferences = temp ;
361
- temp = new ( ) ;
362
- }
363
356
}
364
357
365
358
List < CompilationLibrary > compilationLibraries = new ( ) ;
@@ -947,13 +940,14 @@ private struct LibraryDependency
947
940
948
941
private class ModifiableRuntimeLibrary
949
942
{
950
- public RuntimeLibrary Library { get ; set ; }
943
+ // Dependents are assemblies that depend on this library, as opposed to dependencies which are libraries that this one depends on
951
944
public HashSet < string > Dependents { get ; set ; }
945
+ public RuntimeLibrary Library { get ; set ; }
952
946
953
947
public ModifiableRuntimeLibrary ( RuntimeLibrary library )
954
948
{
955
- this . Library = library ;
956
949
this . Dependents = new ( ) ;
950
+ this . Library = library ;
957
951
}
958
952
}
959
953
}
0 commit comments