Quiero desmontar todo un ensamblado .NET con ILSpy.ILSpy, cómo resolver dependencias?
que utiliza este código como base de:
http://skysigal.xact-solutions.com/Blog/tabid/427/entryid/2488/Default.aspx
y funciona bien, sólo cuando tengo un montaje que hace referencia a Npgsql.dll (o cualquier otro conjunto no GAC), entonces me sale un AssemblyResolutionException.
No se ha podido resolver el montaje: 'Npgsql, versión = 2.0.11.92, Culture = neutral, PublicKeyToken = 5d8b90d52f46fda7'
Sé lo que puedo conseguir los ensamblados de referencia, pero ¿cómo puedo añadir a AST?
// SqlWebAdmin.Models.Decompiler.DecompileAssembly("xy.dll");
public static string DecompileAssembly(string pathToAssembly)
{
//Assembly assembly = Assembly.LoadFrom(pathToAssembly);
System.Reflection.Assembly assembly = System.Reflection.Assembly.ReflectionOnlyLoadFrom(pathToAssembly);
//assembly.GetReferencedAssemblies();
//assembly.GetReferencedAssemblies(assembly);
Mono.Cecil.AssemblyDefinition assemblyDefinition =
Mono.Cecil.AssemblyDefinition.ReadAssembly(pathToAssembly);
ICSharpCode.Decompiler.Ast.AstBuilder astBuilder = new ICSharpCode.Decompiler.Ast.AstBuilder(new ICSharpCode.Decompiler.DecompilerContext(assemblyDefinition.MainModule));
astBuilder.AddAssembly(assemblyDefinition);
//new Helpers.RemoveCompilerAttribute().Run(decompiler.CompilationUnit);
using (System.IO.StringWriter output = new System.IO.StringWriter())
{
astBuilder.GenerateCode(new ICSharpCode.Decompiler.PlainTextOutput(output));
string result = output.ToString();
return result;
}
return "";
} // End Function DecompileAssembly
'//assembly.GetReferencedAssemblies();' en el código original de su enlace fue ' GetReferencedAssemblies (assembly); ', ¿lo omitió porque no definen qué es' GetReferencedAssemblies' en el artículo? Ese código probablemente te ayude. –
@ M.Babcock: cierto, pero este código no está en ninguna parte. Y en ObjectManager, no hay ningún método GetReferencedAssemblies que tome el ensamblaje como parámetro ... –