static PEFile LoadPEFile(string fileName, BamlDecompilerSettings settings) { return(new PEFile( fileName, new FileStream(fileName, FileMode.Open, FileAccess.Read), streamOptions: PEStreamOptions.PrefetchEntireImage, metadataOptions: MetadataReaderOptions.None )); }
static BamlDecompilerTypeSystem CreateTypeSystemFromFile(string fileName, BamlDecompilerSettings settings) { var file = LoadPEFile(fileName, settings); var resolver = new UniversalAssemblyResolver(fileName, settings.ThrowOnAssemblyResolveErrors, file.DetectTargetFrameworkId(), file.DetectRuntimePack(), PEStreamOptions.PrefetchMetadata, MetadataReaderOptions.None); return(new BamlDecompilerTypeSystem(file, resolver)); }
internal XamlDecompiler(BamlDecompilerTypeSystem typeSystem, BamlDecompilerSettings settings) { this.typeSystem = typeSystem ?? throw new ArgumentNullException(nameof(typeSystem)); this.settings = settings; this.module = typeSystem.MainModule; if (module.TypeSystemOptions.HasFlag(TypeSystemOptions.Uncached)) { throw new ArgumentException("Cannot use an uncached type system in the decompiler."); } }
public static XamlContext Construct(IDecompilerTypeSystem typeSystem, BamlDocument document, CancellationToken token, BamlDecompilerSettings bamlDecompilerOptions) { var ctx = new XamlContext(typeSystem); ctx.CancellationToken = token; ctx.Settings = bamlDecompilerOptions ?? new BamlDecompilerSettings(); ctx.Baml = BamlContext.ConstructContext(typeSystem, document, token); ctx.RootNode = BamlNode.Parse(document, token); ctx.BuildPIMappings(document); ctx.BuildNodeMap(ctx.RootNode as BamlBlockNode); return(ctx); }
public XamlDecompiler(PEFile module, IAssemblyResolver assemblyResolver, BamlDecompilerSettings settings) : this(new BamlDecompilerTypeSystem(module, assemblyResolver), settings) { }
public XamlDecompiler(string fileName, IAssemblyResolver assemblyResolver, BamlDecompilerSettings settings) : this(LoadPEFile(fileName, settings), assemblyResolver, settings) { }
public XamlDecompiler(string fileName, BamlDecompilerSettings settings) : this(CreateTypeSystemFromFile(fileName, settings), settings) { }