Tôi muốn tháo rời toàn bộ hội đồng .NET với ILSpy.ILSpy, cách giải quyết các phụ thuộc?
tôi đã sử dụng mã này như cơ sở:
http://skysigal.xact-solutions.com/Blog/tabid/427/entryid/2488/Default.aspx
Và nó hoạt động tốt, chỉ khi tôi có một hội đồng tham chiếu Npgsql.dll (hoặc bất kỳ lắp ráp phi gấc khác), sau đó tôi nhận được một AssemblyResolutionException.
Không thể giải quyết lắp ráp: 'Npgsql, Version = 2.0.11.92, Văn hóa = trung tính, PublicKeyToken = 5d8b90d52f46fda7'
Tôi biết làm thế nào tôi có thể nhận được các hội đồng tham chiếu, nhưng làm thế nào tôi có thể thêm chúng vào 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(); 'trong mã gốc từ liên kết của bạn là' GetReferencedAssemblies (assembly); ', bạn đã bỏ nó ra vì họ không định nghĩa' GetReferencedAssemblies' là gì trong bài viết? Mã đó có lẽ sẽ giúp bạn. –
@ M.Babcock: Đúng nhưng mã này không có ở đâu để tìm. Và trong ObjectManager, không có phương thức GetReferencedAssemblies nào lấy assembly làm tham số ... –