@@ -93,7 +93,7 @@ public IDictionary ToResolverCache ()
9393 return resolver_cache ;
9494 }
9595
96- public virtual AssemblyDefinition Load ( string fileName )
96+ public virtual AssemblyDefinition Load ( string fileName , ReaderParameters parameters = null )
9797 {
9898 if ( ! File . Exists ( fileName ) )
9999 return null ;
@@ -104,29 +104,28 @@ public virtual AssemblyDefinition Load (string fileName)
104104 return assembly ;
105105
106106 try {
107- assembly = ReadAssembly ( fileName ) ;
107+ assembly = ReadAssembly ( fileName , parameters ) ;
108108 } catch ( Exception e ) {
109109 Diagnostic . Error ( 9 , e , "Error while loading assembly: {0}" , fileName ) ;
110110 }
111111 cache . Add ( name , assembly ) ;
112112 return assembly ;
113113 }
114114
115- protected virtual AssemblyDefinition ReadAssembly ( string file )
115+ protected virtual AssemblyDefinition ReadAssembly ( string file , ReaderParameters parameters )
116116 {
117- var reader_parameters = new ReaderParameters ( ) {
118- AssemblyResolver = this ,
119- ReadSymbols = loadDebugSymbols && ( File . Exists ( file + ".mdb" ) || File . Exists ( Path . ChangeExtension ( file , ".pdb" ) ) ) ,
120- } ;
117+ parameters = parameters ?? new ReaderParameters ( ) ;
118+ parameters . AssemblyResolver = this ;
119+ parameters . ReadSymbols = loadDebugSymbols && ( File . Exists ( file + ".mdb" ) || File . Exists ( Path . ChangeExtension ( file , ".pdb" ) ) ) ;
121120 try {
122- return AssemblyDefinition . ReadAssembly ( file , reader_parameters ) ;
121+ return AssemblyDefinition . ReadAssembly ( file , parameters ) ;
123122 } catch ( Exception ex ) {
124123 logWarnings (
125124 "Failed to read '{0}' with debugging symbols. Retrying to load it without it. Error details are logged below." ,
126125 new [ ] { file } ) ;
127126 logWarnings ( "{0}" , new [ ] { ex . ToString ( ) } ) ;
128- reader_parameters . ReadSymbols = false ;
129- return AssemblyDefinition . ReadAssembly ( file , reader_parameters ) ;
127+ parameters . ReadSymbols = false ;
128+ return AssemblyDefinition . ReadAssembly ( file , parameters ) ;
130129 }
131130 }
132131
@@ -135,6 +134,11 @@ public AssemblyDefinition GetAssembly (string fileName)
135134 return Resolve ( Path . GetFileNameWithoutExtension ( fileName ) ) ;
136135 }
137136
137+ public AssemblyDefinition GetAssembly ( string fileName , ReaderParameters parameters )
138+ {
139+ return Resolve ( Path . GetFileNameWithoutExtension ( fileName ) , parameters ) ;
140+ }
141+
138142 public AssemblyDefinition Resolve ( string fullName )
139143 {
140144 return Resolve ( fullName , null ) ;
@@ -187,7 +191,7 @@ public AssemblyDefinition Resolve (AssemblyNameReference reference, ReaderParame
187191 AssemblyDefinition candidate = null ;
188192 foreach ( var dir in SearchDirectories ) {
189193 if ( ( assemblyFile = SearchDirectory ( name , dir ) ) != null ) {
190- var loaded = Load ( assemblyFile ) ;
194+ var loaded = Load ( assemblyFile , parameters ) ;
191195 if ( Array . Equals ( loaded . Name . MetadataToken , reference . MetadataToken ) )
192196 return loaded ;
193197 candidate = candidate ?? loaded ;
0 commit comments