none
DLLに含まれるクラスの情報を閲覧したい RRS feed

  • 質問

  • DLL内に含まれるクラスの一覧とそのメンバ変数の一覧を閲覧する方法はありますでしょうか?

    たとえば、Visual C# 2010 のソースコード上で
    「System.Collections.Generic.List」を選択した状態で、右クリック→「定義へ移動」を選択すると、
    mscorlib.dll の中身の抜粋として、
    namespace System.Collections.Generic と、その内側のテンプレートクラス List<T> のプロトタイプを閲覧できるようですが、
    mscorlib.dll の中身の他のクラスも見てみたいのです。

    depends.exe や dumpbin.exe を試してみましたが、
    user32.dll に含まれているような C からアクセスできる関数の一覧を見ることはできましたが、
    mscorlib.dll に含まれているような C# からアクセスできるクラスの情報は見ることができませんでした。

    プログラムの処理として一覧を取得したいのではなく、
    単に目で見えるような形で閲覧したいだけなので、良いツール等あればご紹介いただきたいです。
    2012年2月10日 11:39

回答

  • Visual Studio からなら、オブジェクトブラウザでアセンブリを開けば全ての型が見えます。

    標準の SDK ツールだと、ildasm.exe で確認できますが、CIL で出力されるので読みにくいかもしれません。サードパーティ製品だと、.NET Reflector なんかが有名どころで、こちらは CIL, C#, VB, Delphi, PowerShell などの構文で表示する機能があったりします。

    • 回答としてマーク kkoba 2012年2月10日 15:20
    2012年2月10日 12:10

すべての返信

  • .NET Frameworkのソースコードをダウンロードすればいいのではないでしょうか。

    Visual Studio 2008で見る.NET Frameworkのソースコード - @IT


    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/

    2012年2月10日 11:55
  • Visual Studio からなら、オブジェクトブラウザでアセンブリを開けば全ての型が見えます。

    標準の SDK ツールだと、ildasm.exe で確認できますが、CIL で出力されるので読みにくいかもしれません。サードパーティ製品だと、.NET Reflector なんかが有名どころで、こちらは CIL, C#, VB, Delphi, PowerShell などの構文で表示する機能があったりします。

    • 回答としてマーク kkoba 2012年2月10日 15:20
    2012年2月10日 12:10
  • ところで、なぜ DLL に含まれているクラスの一覧がほしかったのでしょうか。
    その目的によっては別の方法も提案されるかもしれません。

    # 「興味本位でみたい」なら、ILDASM とか、オブジェクトブラウザーで頑張ってとしかいえないところですが…。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年2月10日 13:36
    モデレータ
  • なるほど、VisualStudioで直接DLL開けたのですね。
    ildasm, .NET Reflector も使ってみましたが良い感じです。
    それぞれの利点を生かしてDLL閲覧に励もうと思います。ありがとうございました!

    2012年2月10日 15:24
  • 質問の仕方がわかりにくくて申し訳ありませんが、
    .NET Framework に限らず一般的にDLLの中身を閲覧する方法を知りたかったのです。
    ソースコードの公開されているものについてはソースコードも参考にしようと思います。ありがとうございます。
    2012年2月10日 15:25
  • 端的に言うと興味本位です。VisualC#で見れるクラスがdepends.exe等で見れないことについて割と長い間モヤモヤしていました。
    直近の目的で言うと、ドキュメントの整備されていないAPIの情報収集です。ドキュメントを漁るよりDLL実体を直接見るほうが理解の助けになることがしばしばあります。
    オブジェクトブラウザ, ildasm, .NET Reflector で目的は果たせそうです。ありがとうございます。
    2012年2月10日 15:30
  • .NET Framework に限らず一般的にDLLの中身を閲覧する方法を知りたかったのです。
    ソースコードの公開されているものについてはソースコードも参考にしようと思います。ありがとうございます。

    逆アセンブル、逆コンパイル、リバースエンジニアリングといった行為は使用許諾契約によって禁じられている場合があります。
    一般論を考えるのであれば、その点をお忘れなきようにご注意ください。

    # undocumented な API は仕様変更や消えても文句は言えませんね。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年2月10日 15:37
    モデレータ
  • DLLには種類がいろいろあります。managedとunmanagedは別物なので同時に扱えるツールは少ないです。

    2012年2月11日 10:03