@@ -33,17 +33,25 @@ public void Disable()
3333 IsEnabled = false ;
3434 }
3535
36- readonly List < Func < string , FilterResults > > assemblyFilters = new List < Func < string , FilterResults > > ( ) ;
36+ readonly List < Func < string , FilterResults > > assemblyFilters = [ ] ;
3737
3838 internal IEnumerable < Assembly > Scan ( )
3939 {
40- var assemblies = new List < Assembly > ( ) ;
40+ var assemblies = new Dictionary < string , Assembly > ( ) ;
4141
4242 bool FullPathsFilter ( string fullPath )
4343 {
4444 return assemblyFilters . All ( filter => filter ( fullPath ) == FilterResults . Include ) ;
4545 }
4646
47+ foreach ( var assembly in AppDomain . CurrentDomain . GetAssemblies ( ) )
48+ {
49+ if ( FullPathsFilter ( assembly . Location ) )
50+ {
51+ assemblies . TryAdd ( assembly . GetName ( ) . FullName , assembly ) ;
52+ }
53+ }
54+
4755 foreach ( var patternToUse in assemblySearchPatternsToUse )
4856 {
4957 var assembliesFullPaths = Directory
@@ -55,7 +63,15 @@ bool FullPathsFilter(string fullPath)
5563 AssemblyValidator . ValidateAssemblyFile ( assemblyFullPath , out var shouldLoad , out _ ) ;
5664 if ( shouldLoad )
5765 {
58- assemblies . Add ( Assembly . LoadFrom ( assemblyFullPath ) ) ;
66+ try
67+ {
68+ var assembly = Assembly . LoadFrom ( assemblyFullPath ) ;
69+ assemblies . TryAdd ( assembly . GetName ( ) . FullName , assembly ) ;
70+ }
71+ catch ( FileLoadException )
72+ {
73+ // NOP — FileLoadException happens for already loaded assemblies
74+ }
5975 }
6076 }
6177 }
@@ -72,12 +88,20 @@ bool FullPathsFilter(string fullPath)
7288 AssemblyValidator . ValidateAssemblyFile ( platformAssemblyFullPath , out var shouldLoad , out _ ) ;
7389 if ( shouldLoad )
7490 {
75- assemblies . Add ( Assembly . LoadFrom ( platformAssemblyFullPath ) ) ;
91+ try
92+ {
93+ var assembly = Assembly . LoadFrom ( platformAssemblyFullPath ) ;
94+ assemblies . TryAdd ( assembly . GetName ( ) . FullName , assembly ) ;
95+ }
96+ catch ( FileLoadException )
97+ {
98+ // NOP — FileLoadException happens for already loaded assemblies
99+ }
76100 }
77101 }
78102 }
79103
80- return assemblies . Distinct ( ) ;
104+ return assemblies . Values ;
81105 }
82106
83107 public void AddAssemblyFilter ( Func < string , FilterResults > filter )
0 commit comments