私は少し苦境にあります。
ソースコードが利用できない既存のASP.NETWebアプリケーションを維持するタスクが割り当てられました。すべてのコードがコンパイルされ、binフォルダーに配置されます。
今、私はいくつかのメソッドの実装を変更する必要があります。これは私がそのような状況に対処するのは初めてなので、これを行うための最良の方法に関するあなたの提案と推奨を本当に感謝します。
私は少し苦境にあります。
ソースコードが利用できない既存のASP.NETWebアプリケーションを維持するタスクが割り当てられました。すべてのコードがコンパイルされ、binフォルダーに配置されます。
今、私はいくつかのメソッドの実装を変更する必要があります。これは私がそのような状況に対処するのは初めてなので、これを行うための最良の方法に関するあなたの提案と推奨を本当に感謝します。
たとえば、Reflector ツールを使用して逆コンパイルを試みることができます。本当の問題は、ソース コードを持っていない場合、このアプリケーションを変更してもよいですか? ということです。
@codymanixが言ったことと一緒に。
アセンブリを ILDASM で逆コンパイルするだけです。必要なメソッドを仮想化 (または封印解除) します。ILASM で再コンパイルします。終わり。
callvirt
の代わりにを使用するには、これらのメソッドへの呼び出しを修正する必要がある場合がありますcall
。
レガシ アセンブリ内のすべての内部参照が新しい実装を使用するように、実装を変更する必要がありますか? その場合、レガシーバイナリを変更する必要があるため、実行できません(少なくとも維持するのが妥当な方法ではありません)。
クライアントのニーズ (つまり、制御できるアセンブリからの参照) の refacs の時点で、プロキシを作成し、レガシー ライブラリへのすべての参照をプロキシに置き換えることをお勧めします。これにより、レガシー ライブラリの動作を徐々に拡張/変更できます。将来的には、これによりレガシー ライブラリを別のものに変更できるようになります。