1

独自に作成した他の多数の dll を呼び出す .net Windows サービス アプリケーションがあります。ただし、これらの dll はすべて x86 用に作成されたものであり、その後 Any CPU (x64 環境) に移行しました。残念ながら、.NET の遅延読み込み機能のおかげで、これらの dll の多くは、まれでやや複雑なコード パスを実行しない限り読み込まれません。正味の結果は?コードをデプロイしてから数日または数週間後に、不適切な形式の例外が発生します。

.NET が直接参照するすべてのアセンブリを強制的に完全にロードする方法があるかどうかを知りたいので、これらの依存 dll が作成された多数のプロジェクトを手動で調べたり、完全な回帰を行ったりすることなく、そのような非互換性を確認できます。すべてのアセンブリを強制的にロードするテスト。

補遺: 特定の x86-dlls-in-a-x64-environment の問題を解決する簡単な方法があるとしても、環境にすべての依存関係を強制的にロードさせる方法があるかどうかを確認したいと思っています。いつ役に立つかわかりません!:)

編集:これらはすべてマネージド DLL であり、実際にリフレクションを使用して本番環境で問題をトリアージしました。ただし、開発環境では、他のオプションと同じ問題が発生します。すべての DLL を何らかの方法で手動でトラバースすることです。

4

1 に答える 1

0

1つの方法は、ILMergeを使用してライブラリを静的にリンクし、それらを実行可能ファイル自体にマージすることです。それ以外の場合、DLLの要点は、コードで使用されるまで評価されないということです。静的ライブラリに相当する.NETを参照してください。

もちろん、すべてのdllのいくつかの側面に影響を与えるアプリのロード時に診断シーケンスを実行することもできます。したがって、少なくともロード時に何があり、何が機能しないかを知っています。

于 2012-10-19T14:16:54.113 に答える