ILSpyを使用して.NETアセンブリ全体を逆アセンブルします。ILSpy、依存関係を解決する方法は?
私はベースとして、このコードを使用:
http://skysigal.xact-solutions.com/Blog/tabid/427/entryid/2488/Default.aspxそして、それは私がNpgsql.dll(または任意の他の非GACのアセンブリ)を参照するアセンブリを持っているちょうどその時、正常に動作し、その後、私はAssemblyResolutionExceptionを取得します。
は、アセンブリの解決に失敗しました:「Npgsqlの、バージョン= 2.0.11.92、カルチャニュートラル、PublicKeyToken = = 5d8b90d52f46fda7」
は私が参照されるアセンブリを得ることができますが、どのように私は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();'あなたのリンクから、元のコードで 'でしたGetReferencedAssemblies(アセンブリ); '、' GetReferencedAssemblies'が記事にあるものを定義していないので、あなたはそれを省略しましたか?そのコードはおそらくあなたを助けるでしょう。 –
@ M.Babcock:真だが、このコードは見つからない。 ObjectManagerには、GetReferencedAssembliesというメソッドがありません。このメソッドはパラメータとしてアセンブリを受け取ります。 –