実行中の .Net アプリケーション、これまでにロードされたすべてのクラスを確認する簡単な方法はありますか? これは、大規模なプロジェクトで使用されなくなったクラスを削除するのに役立ちます。
すべてのクラスに静的初期化子を配置して、何らかの登録を行うことができることはわかっていますが、これは面倒でエラーが発生しやすいものです。AppDomain または Assembly クラスなどを介してそれを行うためのよりクリーンな方法があれば、それは素晴らしいことです。ありがとう!
実行中の .Net アプリケーション、これまでにロードされたすべてのクラスを確認する簡単な方法はありますか? これは、大規模なプロジェクトで使用されなくなったクラスを削除するのに役立ちます。
すべてのクラスに静的初期化子を配置して、何らかの登録を行うことができることはわかっていますが、これは面倒でエラーが発生しやすいものです。AppDomain または Assembly クラスなどを介してそれを行うためのよりクリーンな方法があれば、それは素晴らしいことです。ありがとう!
現在のアプリドメインにロードされているアセンブリを簡単に見つけることができます- AppDomain.CurrentDomain.GetAssemblies()
。もちろん、これを実行する特定の時間にロードされたアセンブリに関する情報を提供するだけです。ソリューション内の冗長なコードを見つけてクリーンアップするためのはるかに優れた方法があります。個人的には、ReSharperが好きです。「コードの問題の検索」(ソリューション全体で使用可能)と呼ばれる優れた機能があり、未使用のシンボルのリストが表示されます。これはまさにあなたが探しているものです。
PostSharp、Spring.Aop などのアスペクト ライブラリを使用して、メソッド、プロパティなどへのすべての呼び出しをインターセプトし、型名をセットに追加できます。別の方法は、プロファイラーを使用することです。残念ながら、どちらのアプローチでも、アプリケーションを使い続ける必要があります (うまくいけば、UI を備えたデスクトップ アプリケーションです)。
ところで、CodeAnalysis を有効にして、パフォーマンスの警告を探してみましたか? 呼び出されないすべてのメソッド、プロパティ、フィールドについて警告が表示されます。