Y121516 の大館お役立ち日記

秋田県大館市での生活

逆コンパイルされたソース定義を表示する方法

f:id:y121516:20180306194157p:plain

コンパイルされたソース定義を表示する方法

Visual Studio 2017 15.6.0 から、ソースコードが無くてもソースを表示できるようになりました。これは便利!

今までも「定義へ移動」という機能がありました。しかし、ソースコードがない場合、「メタデータ」という形で宣言のみが表示されていました。 Visual Studio 2017 15.6.0 から、なんとソースコードが無くてもアセンブリC# に逆コンパイルした定義を表示することができます‼

設定の仕方

  1. 「メニュー」👉「ツール」👉「オプション」を選び、「オプション」ダイアログを表示します。
  2. 左側のツリーから「テキスト エディター」👉「C#」と展開し、「詳細設定」を選びます。
  3. ☑「逆コンパイルされたソースへのナビゲーションを有効にする (試験的)」にチェックを入れます。
  4. 「OK」ボタンを押し、「オプション」ダイアログを閉じます。

さぁ、設定ができました!

使い方

  1. ソースコードがないクラス・メソッド・プロパティなどの上にカーソルを置きます。
  2. 「定義へ移動」します。(「F12」キーを押すのが簡単です。)
  3. Visual Studio 2017 を起動した初回ごとに、法的な免責事項に同意を求められます。
  4. 同意できるなら「はい」を押します。
  5. コンパイルされたソースコードへ飛びます!

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine();
        }
    }
}
  • Console の上で「F12」キーを押せば、逆コンパイルした Console クラスの定義へ飛びます。
  • WriteLine の上で「F12」キーを押せば、逆コンパイルした WriteLine メソッドの定義へ飛びます。

Visual Basic (VB) では?

今のところ (Visual Studio 15.6.0) 非常に中途半端に対応しています。

VB には「逆コンパイルされたソースへのナビゲーションを有効にする (試験的)」という設定項目がないですが、上記のとおり C# の設定で「逆コンパイルされたソースへのナビゲーションを有効にする (試験的)」にチェックを入れましょう。そして Visual Studio を再起動しましょう。 その後 VB のソース上で「定義へ移動」を使うと法的な免責事項に同意を求められます。同意し「はい」を押すと、なんと逆コンパイルした定義が表示されます。 ところが VB ではなく C#ソースコードが表示されます。エディタが C#ソースコードVB と無理やり解釈しようとしているせいか、正しいシンボルに飛ばないこともあります。

非常に仕様レベルでバグバグな感じではあるのですが、いちおう(?) VBでも逆コンパイルされたソース定義を表示する機能は使えるというお話でした。

参照