Я хочу разобрать всю сборку .NET с помощью ILSpy.ILSpy, как разрешать зависимости?
Я использовал этот код в качестве основы:
http://skysigal.xact-solutions.com/Blog/tabid/427/entryid/2488/Default.aspx
И это прекрасно работает, только когда у меня есть узел, который ссылается Npgsql.dll (или любой другой, не GAC сборки), то я получаю AssemblyResolutionException.
Не удалось разрешить сборку: «Npgsql, Version = 2.0.11.92, культура = нейтральной, PublicKeyToken = 5d8b90d52f46fda7»
Я знаю, как я могу получить ссылки сборки, но как я могу добавить их в Аст?
// 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(); 'в исходном коде от вашей ссылки был' GetReferencedAssemblies (assembly); ', вы его оставили, потому что они не определяют, что такое' GetReferencedAssemblies' в статье? Этот код, вероятно, поможет вам. –
@ M.Babcock: Верно, но этого кода не найти. А в ObjectManager нет метода GetReferencedAssemblies, который принимает сборку как параметр ... –