public string WriteResourceToFile(LoadedAssembly assembly, string fileName, Stream stream, DecompilationOptions options) { var document = BamlResourceEntryNode.LoadIntoDocument(assembly.GetPEFileOrNull(), assembly.GetAssemblyResolver(), stream, options.CancellationToken); fileName = Path.ChangeExtension(fileName, ".xaml"); document.Save(Path.Combine(options.SaveAsProjectDirectory, fileName)); return(fileName); }
public string WriteResourceToFile(LoadedAssembly assembly, string fileName, Stream stream, DecompilationOptions options) { BamlDecompilerTypeSystem typeSystem = new BamlDecompilerTypeSystem(assembly.GetPEFileOrNull(), assembly.GetAssemblyResolver()); var decompiler = new XamlDecompiler(typeSystem, new BamlDecompilerSettings() { ThrowOnAssemblyResolveErrors = options.DecompilerSettings.ThrowOnAssemblyResolveErrors }); decompiler.CancellationToken = options.CancellationToken; fileName = Path.ChangeExtension(fileName, ".xaml"); var result = decompiler.Decompile(stream); result.Xaml.Save(Path.Combine(options.SaveAsProjectDirectory, fileName)); return(fileName); }
public ReadyToRunAssemblyResolver(LoadedAssembly loadedAssembly) { assemblyResolver = loadedAssembly.GetAssemblyResolver(); }
public void Setup() { assemblyList = new AssemblyList(); testAssembly = assemblyList.OpenAssembly(typeof(MethodUsesAnalyzerTests).Assembly.Location); testAssemblyTypeSystem = new DecompilerTypeSystem(testAssembly.GetPEFileOrNull(), testAssembly.GetAssemblyResolver()); language = new CSharpLanguage(); }
public string WriteResourceToFile(LoadedAssembly assembly, string fileName, Stream stream, ResourceFileHandlerContext context) { BamlDecompilerTypeSystem typeSystem = new BamlDecompilerTypeSystem(assembly.GetPEFileOrNull(), assembly.GetAssemblyResolver()); var decompiler = new XamlDecompiler(typeSystem, new BamlDecompilerSettings() { ThrowOnAssemblyResolveErrors = context.DecompilationOptions.DecompilerSettings.ThrowOnAssemblyResolveErrors }); decompiler.CancellationToken = context.DecompilationOptions.CancellationToken; var result = decompiler.Decompile(stream); var typeDefinition = result.TypeName.HasValue ? typeSystem.MainModule.GetTypeDefinition(result.TypeName.Value.TopLevelTypeName) : null; if (typeDefinition != null) { fileName = WholeProjectDecompiler.CleanUpPath(typeDefinition.ReflectionName) + ".xaml"; var partialTypeInfo = new PartialTypeInfo(typeDefinition); foreach (var member in result.GeneratedMembers) { partialTypeInfo.AddDeclaredMember(member); } context.AddPartialTypeInfo(partialTypeInfo); } else { fileName = Path.ChangeExtension(fileName, ".xaml"); } string saveFileName = Path.Combine(context.DecompilationOptions.SaveAsProjectDirectory, fileName); Directory.CreateDirectory(Path.GetDirectoryName(saveFileName)); result.Xaml.Save(saveFileName); return(fileName); }