/// <summary> /// Load assembly from disk /// </summary> /// <param name="location">assembly location</param> /// <param name="loadsymbols">load symbols</param> /// <returns></returns> public override AssemblyDefinition LoadAssembly(string location, bool loadsymbols) { ReaderParameters parameters = new ReaderParameters(); parameters.ReadSymbols = loadsymbols; parameters.ReadingMode = ReadingMode.Deferred; var resolver = new ReflexilAssemblyResolver(); try { return(resolver.ReadAssembly(location, parameters)); } catch (Exception) { // perhaps pdb file is not found, just ignore this time if (loadsymbols) { parameters.ReadSymbols = false; return(resolver.ReadAssembly(location, parameters)); } else { throw; } } }
public sealed override string[] GetReferences(bool keepextension, CompilerProfile profile) { var references = new List <string>(); var parameters = new ReaderParameters { ReadSymbols = false, ReadingMode = ReadingMode.Deferred, InMemory = true, }; var resolver = new ReflexilAssemblyResolver(parameters); var filename = _mdefsource.DeclaringType.Module.Image.FileName; var currentPath = Path.GetDirectoryName(filename); if (currentPath != null) { Directory.SetCurrentDirectory(currentPath); resolver.AddSearchDirectory(currentPath); // Properly register assembly, so we can find it even if the name is changed resolver.RegisterAssembly(_mdefsource.DeclaringType.Module.Assembly); } foreach (var asmref in CompileReferences) { string reference; if ((profile == null || !profile.NoStdLib) && (asmref.Name == "mscorlib" || asmref.Name.StartsWith("System"))) { reference = asmref.Name + (keepextension ? ".dll" : string.Empty); } else { try { var asmdef = resolver.Resolve(asmref); reference = asmdef.MainModule.Image.FileName; } catch (Exception) { continue; } } if (!references.Contains(reference)) { references.Add(reference); } } return(references.ToArray()); }
public virtual AssemblyDefinition LoadAssembly(string location, bool readsymbols) { var parameters = new ReaderParameters { ReadSymbols = readsymbols, ReadingMode = ReadingMode.Deferred, InMemory = true, ThrowIfSymbolsAreNotMatching = false, SymbolReaderProvider = readsymbols ? new DefaultSymbolReaderProvider(false) : null }; var resolver = new ReflexilAssemblyResolver(parameters); return(resolver.ReadAssembly(location)); }
public virtual AssemblyDefinition LoadAssembly(string location, bool readsymbols) { var parameters = new ReaderParameters { ReadSymbols = readsymbols, ReadingMode = ReadingMode.Deferred }; var resolver = new ReflexilAssemblyResolver(); try { return(resolver.ReadAssembly(location, parameters)); } catch (Exception) { // perhaps pdb file is not found, just ignore this time if (!readsymbols) { throw; } parameters.ReadSymbols = false; return(resolver.ReadAssembly(location, parameters)); } }