Mono Cecil を使用してアプリケーションのコードベースのさまざまな部分を分析するツールを作成しました。TypeReference を解決できることに依存しています (これには、TypeDefinition を含むアセンブリの検索が含まれます)。DLL を見つけることができるパスのリストをフィードすると、これは正常に機能します。
ただし、アプリケーションの依存関係はいくぶん複雑で、 .NET のアセンブリ リゾルバーをガイドする要素<bindingRedirect>
と要素を多用する app.config があります。<codeBase>
たとえば、DLL のバージョンごとに整理されたディレクトリ構造があり、古いバージョン番号を最新のものにリダイレクトし、2 つのバージョンの DLL を同時にロードできます (重大な変更がある場合は、1.x と 1.x を実行できます)。同じプロセス内の 2.x バージョン)。
私の Cecil ベースのツールが同じルールに従うことを望みます。既存の app.config を利用する方法はありますか?
- 実際にアセンブリをロードせずに、アセンブリ名を DLL パスに変換するように .NET に依頼できますか? (これは壊れた DLL を報告するツールであるため、アセンブリが正常に読み込まれない場合があります。)
- または、.NET が実行時にアセンブリを検索するために使用するアルゴリズムのオープン ソース実装が既に存在しますか?