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 String[] GetReferences(bool keepextension, CompilerProfile profile) { // We cannot use abstract modifier because of the designer, let's derived class handle this method throw new NotImplementedException(); }