@@ -318,7 +318,7 @@ internal static List<Assembly> TopologicalSort(Assembly[] assemblies)
318
318
{
319
319
var sortedAssemblies = new List < Assembly > ( assemblies . Length ) ;
320
320
321
- var visited = new HashSet < string > ( StringComparer . Ordinal ) ;
321
+ var visited = new HashSet < string > ( StringComparer . OrdinalIgnoreCase ) ;
322
322
323
323
foreach ( var assembly in assemblies )
324
324
{
@@ -327,15 +327,46 @@ internal static List<Assembly> TopologicalSort(Assembly[] assemblies)
327
327
328
328
static void Visit ( Assembly [ ] assemblies , Assembly assembly , List < Assembly > sortedAssemblies , HashSet < string > visited )
329
329
{
330
- var assemblyIdentifier = assembly . GetName ( ) . Name ! ;
331
- if ( ! visited . Add ( assemblyIdentifier ) )
330
+ string assemblyIdentifier ;
331
+
332
+ try
333
+ {
334
+ assemblyIdentifier = assembly . GetName ( ) . Name ;
335
+ }
336
+ catch
337
+ {
338
+ return ;
339
+ }
340
+
341
+ if ( assemblyIdentifier == null || ! visited . Add ( assemblyIdentifier ) )
332
342
{
333
343
return ;
334
344
}
335
345
336
- foreach ( var dependencyName in assembly . GetReferencedAssemblies ( ) )
346
+ AssemblyName [ ] referencedAssemblies ;
347
+ try
337
348
{
338
- var dependency = Array . Find ( assemblies , a => a . GetName ( ) . Name == dependencyName . Name ) ;
349
+ referencedAssemblies = assembly . GetReferencedAssemblies ( ) ;
350
+ }
351
+ catch
352
+ {
353
+ referencedAssemblies = [ ] ;
354
+ }
355
+
356
+ foreach ( var dependencyName in referencedAssemblies )
357
+ {
358
+ var dependency = Array . Find ( assemblies , a =>
359
+ {
360
+ try
361
+ {
362
+ return string . Equals ( a . GetName ( ) . Name , dependencyName . Name , StringComparison . OrdinalIgnoreCase ) ;
363
+ }
364
+ catch
365
+ {
366
+ return false ;
367
+ }
368
+ } ) ;
369
+
339
370
if ( dependency is not null )
340
371
{
341
372
Visit ( assemblies , dependency , sortedAssemblies , visited ) ;
0 commit comments