274

数年前にクライアント向けの C# アプリケーションを作成しましたが、ソース コードが手元にありません。私が持っているのは、クライアントの PC に展開した EXE だけです。EXE から C# ソース コードを生成する方法はありますか?

4

8 に答える 8

204

ReflectorとそのアドインFileDisassemblyr

Reflector を使用すると、ソース コードを表示できます。FileDisassemblyr を使用すると、VS ソリューションに変換できます。

于 2008-10-07T18:28:00.850 に答える
150

Red Gate が .Net Reflector の無料版はもうないと言ったとき、私はILSpyと Telerik のJustDecompileを使い始めました。私は ILSpy が JustDecompile (まだベータ版) よりも正確に逆コンパイルすることを発見しました。Red Gate は決定を変更し、まだ .Net Reflector の無料バージョンを持っていますが、今では ILSpy が気に入っています。

ILSpy Web サイト ( https://github.com/icsharpcode/ILSpy/ ) から:

ILSpyは、オープン ソースの .NET アセンブリ ブラウザーおよび逆コンパイラーです。

ILSpy 機能

  • アセンブリ ブラウジング
  • ILの分解
  • C# への逆コンパイル
  • ラムダと 'yield return' をサポート
  • XML ドキュメントを表示します
  • 省資源
  • タイプ/メソッド/プロパティ (部分文字列) の検索
  • ハイパーリンク ベースの型/メソッド/プロパティ ナビゲーション
  • ベース/派生型のナビゲーション
  • ナビゲーション履歴
  • BAML から XAML への逆コンパイラ
  • アセンブリを C# プロジェクトとして保存
  • フィールド/メソッドの使用法を見つける
  • プラグイン (MEF) を介して拡張可能

アップデート:

2012 年 4 月 15 日、ILSpy 2.0 がリリースされました。バージョン 1.0 と比較した新機能:

  • アセンブリ リスト
  • 式ツリーの逆コンパイルのサポート
  • nullable での持ち上げられた演算子のサポート
  • Visual Basic に逆コンパイル
  • スペースで区切られた複数の文字列を検索します (ILSpy.exe で「アセンブリ マネージャー」を検索すると、AssemblyListManager が見つかります)。
  • ローカル変数をクリックすると、その変数の他のすべての出現箇所が強調表示されます
  • Ctrl+F を使用して、逆コンパイルされたコード ビュー内を検索できます

アップデート:

  • ILSpy 2.1 は async/await 逆コンパイルをサポートします
于 2011-10-05T16:38:15.137 に答える
66

Reflectorは一般的に無料ではなくなりましたが、オープンソース開発者に無料で提供しています:http: //reflectorblog.red-gate.com/2013/07/open-source/

しかし、DevExtrasやJetBrainsのようないくつかの会社は、無料の代替手段を作成しました。

DevExtras CodeReflect

JetBrains DotPeek

于 2011-06-07T13:40:27.127 に答える
37

Denis Bauer による Reflector およびFile Disassemblyrアドイン。実際にはアセンブリからソース プロジェクトを生成しますが、Reflector 自体は逆アセンブルされたソースのみを表示します。

追加: 私の最近のお気に入りは、JetBrains のdotPeekです。

于 2008-10-07T18:32:08.830 に答える
26

Microsoft のildasmについて誰も言及していないことに驚いています。ILSpy や Reflector ほどきれいではないかもしれませんが、Visual Studio に付属しているため、多くの開発者が既に使用しています。

実行するには (VS 2013 と仮定すると、他のバージョンでも同様のはずです):

  1. [スタート] > [すべてのプログラム] > [Visual Studio 2013] > [Visual Studio ツール] を選択します。
  2. VS2013 の開発者コマンド プロンプトをダブルクリックします。
  3. 表示されたコマンド プロンプトから「ildasm」を実行します。
  4. ツールで、[ファイル] > [開く] を選択し、実行可能ファイルまたは DLL を開きます。

これで、DLL 構造をナビゲートできます。クラス メンバーをダブルクリックして、IL を表示します。File > Dump を使用して、IL をファイルにエクスポートします。

于 2015-03-24T17:24:47.757 に答える
15

リフレクターが欲しい。

于 2008-10-07T18:28:24.000 に答える