Help us understand the problem. What is going on with this article?

凄すぎて大草原不可避な.NET デコンパイラdnSpyを使ってみる

More than 3 years have passed since last update.

何これ?

午前中に、Twitter見てたらneuecc先生が

というツイートをしていて、何これ?と思いつつ、仕事戻ってきていじってみた。
そしたら、まぁ凄すぎて草しか生えなかったので、拙速は巧遅に勝る1の精神でとにかく書いてみた。ということで、最後までお付き合い頂ければ幸い。

C#やら、VBやらのデコンパイラはIL Spyとかが有名ですが、その遙か上を突き抜けたようなデコンパイラ。
何が凄いって言うと

  1. dnSpy単体でデバッグ可能
  2. dnSpy単体で有りモノのアセンブリを編集可能
  3. ILレベルでステップデバッグ可能

などなど、上げればキリが無いほど素晴らしいツールになってます。

入手と配置

ここから入手可能です。

Readmeの部分にある"Binaries"から、ダウンロード可能です。(下図参照)
image

落としてきたら、Zipを適当な場所に展開すれば配置は完了。

実行方法

デコンパイルだけで有れば、特に問題にはならないですが、dnSpyでデバッグする場合は、32bitと64bitでアプリケーションを分ける必要があります。
32bitアセンブリの場合はdnSpy-x86.exeを、64bitアセンブリの場合はdnSpy.exeを使います。
また、AnyCpuでビルドしている場合は、ビルドオプション中の32bitの優先が入っていれば、32bit版、入っていなければ64bit版のアプリケーションを使って下さい。

実行後、
1. File
2. Open

の手順を踏んで、目標のファイルを開くか、又は対象となるファイルをドラッグ&ドロップすればOKです。

ちょっとした注意

IL Spyとは異なり、参照中のアセンブリはファイルロックされるので、コンパイルし直すなどする場合は、Assembly Explorerから対象となるアセンブリを指定後Deleteするなど、参照を解除することが必須となります。

使い方

後はほとんどVisual StudioとUIもUXも同じなので、VisualStudioをお使いになってる方は不自由なく使えるかと思います。
余りまだいじってないのですが、現時点で個人的に少しハマったところは、

メソッドの編集

編集したいメソッドを選択して、ショートカットメニューから、EditMethodを選択。編集後に必ず右下のCompileを選択して、Editorを抜ける

ぐらいでした。

まとめ

アセンブリのみ存在する状態で、デバッグ、エディットが可能な上、Visual Studioでやろうとするととんでもなく面倒なことになるILレベルのステップデバッグが可能という、素晴らしいツールでした。

雑記:IL Spyはいらない子?

最初dnSpyだけで良いかなって思ったけど、IL Spy必要なの?と言われればYesだね!
先に挙げたとおり、Fileロックかかるので、PerCompilingとの相性があんまり良くない。
なので、適宜妥当に使い分けると多分幸せになれると思います。


  1. 編集回数見て頂ければ、推して知るべきかと。。。 

Tokeiya
C#スコシワカル
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした