数年前にクライアント向けの C# アプリケーションを作成しましたが、ソース コードが手元にありません。私が持っているのは、クライアントの PC に展開した EXE だけです。EXE から C# ソース コードを生成する方法はありますか?
8 に答える
ReflectorとそのアドインFileDisassemblyr。
Reflector を使用すると、ソース コードを表示できます。FileDisassemblyr を使用すると、VS ソリューションに変換できます。
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 逆コンパイルをサポートします
Reflectorは一般的に無料ではなくなりましたが、オープンソース開発者に無料で提供しています:http: //reflectorblog.red-gate.com/2013/07/open-source/
しかし、DevExtrasやJetBrainsのようないくつかの会社は、無料の代替手段を作成しました。
Denis Bauer による Reflector およびFile Disassemblyrアドイン。実際にはアセンブリからソース プロジェクトを生成しますが、Reflector 自体は逆アセンブルされたソースのみを表示します。
追加: 私の最近のお気に入りは、JetBrains のdotPeekです。
Microsoft のildasmについて誰も言及していないことに驚いています。ILSpy や Reflector ほどきれいではないかもしれませんが、Visual Studio に付属しているため、多くの開発者が既に使用しています。
実行するには (VS 2013 と仮定すると、他のバージョンでも同様のはずです):
- [スタート] > [すべてのプログラム] > [Visual Studio 2013] > [Visual Studio ツール] を選択します。
- VS2013 の開発者コマンド プロンプトをダブルクリックします。
- 表示されたコマンド プロンプトから「ildasm」を実行します。
- ツールで、[ファイル] > [開く] を選択し、実行可能ファイルまたは DLL を開きます。
これで、DLL 構造をナビゲートできます。クラス メンバーをダブルクリックして、IL を表示します。File > Dump を使用して、IL をファイルにエクスポートします。
リフレクターが欲しい。