Skip to content

Commit 8fbaeee

Browse files
committed
[DirectoryAssemblyResolver] add GetAssembly () that allows to set ReaderParameters and fix Resolve () so that it actually uses parameters
1 parent a1d3ecc commit 8fbaeee

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)