Skip to content

Commit d2b5bc1

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

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

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

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ public IDictionary ToResolverCache ()
9494
}
9595

9696
public virtual AssemblyDefinition Load (string fileName)
97+
{
98+
return Load (fileName, null);
99+
}
100+
101+
public virtual AssemblyDefinition Load (string fileName, ReaderParameters parameters)
97102
{
98103
if (!File.Exists (fileName))
99104
return null;
@@ -104,29 +109,28 @@ public virtual AssemblyDefinition Load (string fileName)
104109
return assembly;
105110

106111
try {
107-
assembly = ReadAssembly (fileName);
112+
assembly = ReadAssembly (fileName, parameters);
108113
} catch (Exception e) {
109114
Diagnostic.Error (9, e, "Error while loading assembly: {0}", fileName);
110115
}
111116
cache.Add (name, assembly);
112117
return assembly;
113118
}
114119

115-
protected virtual AssemblyDefinition ReadAssembly (string file)
120+
protected virtual AssemblyDefinition ReadAssembly (string file, ReaderParameters parameters)
116121
{
117-
var reader_parameters = new ReaderParameters () {
118-
AssemblyResolver = this,
119-
ReadSymbols = loadDebugSymbols && (File.Exists(file + ".mdb") || File.Exists(Path.ChangeExtension(file, ".pdb"))),
120-
};
122+
parameters = parameters ?? new ReaderParameters ();
123+
parameters.AssemblyResolver = this;
124+
parameters.ReadSymbols = loadDebugSymbols && (File.Exists(file + ".mdb") || File.Exists(Path.ChangeExtension(file, ".pdb")));
121125
try {
122-
return AssemblyDefinition.ReadAssembly (file, reader_parameters);
126+
return AssemblyDefinition.ReadAssembly (file, parameters);
123127
} catch (Exception ex) {
124128
logWarnings (
125129
"Failed to read '{0}' with debugging symbols. Retrying to load it without it. Error details are logged below.",
126130
new [] { file });
127131
logWarnings ("{0}", new [] { ex.ToString () });
128-
reader_parameters.ReadSymbols = false;
129-
return AssemblyDefinition.ReadAssembly (file, reader_parameters);
132+
parameters.ReadSymbols = false;
133+
return AssemblyDefinition.ReadAssembly (file, parameters);
130134
}
131135
}
132136

@@ -135,6 +139,11 @@ public AssemblyDefinition GetAssembly (string fileName)
135139
return Resolve (Path.GetFileNameWithoutExtension (fileName));
136140
}
137141

142+
public AssemblyDefinition GetAssembly (string fileName, ReaderParameters parameters)
143+
{
144+
return Resolve (Path.GetFileNameWithoutExtension (fileName), parameters);
145+
}
146+
138147
public AssemblyDefinition Resolve (string fullName)
139148
{
140149
return Resolve (fullName, null);
@@ -187,7 +196,7 @@ public AssemblyDefinition Resolve (AssemblyNameReference reference, ReaderParame
187196
AssemblyDefinition candidate = null;
188197
foreach (var dir in SearchDirectories) {
189198
if ((assemblyFile = SearchDirectory (name, dir)) != null) {
190-
var loaded = Load (assemblyFile);
199+
var loaded = Load (assemblyFile, parameters);
191200
if (Array.Equals (loaded.Name.MetadataToken, reference.MetadataToken))
192201
return loaded;
193202
candidate = candidate ?? loaded;

0 commit comments

Comments
 (0)