3

アプリケーションをアップグレードしていて、いくつかの問題が発生しています。現在、古いアプリケーションはバージョン 1.0 であり、バージョン 2.1.1 で依存関係アセンブリ A をロードしています。アセンブリは、アプリケーションのローカル ディレクトリに存在します。新しいアプリケーションをバージョン 2.0 にアップグレードしています。これにより、アプリケーションのローカル ディレクトリにあるアセンブリ A バージョン 1.0.1 が読み込まれます。ISpy を使用してアプリケーション リファレンスを確認し、新しいアプリケーション リファレンス A バージョン 1.0.1 を確認しました。

しかし、新しいアプリケーション (v 2.0) を起動すると、アセンブリ バージョン 2.1.1 を読み込もうとして失敗します。app.config、machine.config、および GAC を確認しましたが、アセンブリ A のバージョンのリダイレクトはありません。Fusion ログ ファイルも確認しましたが、リダイレクトは見られません。Fusion ログに表示されるのは、アプリケーションがバージョン 2.1.1 で A をプレバインドしているため、ローカル ディレクトリに存在するアセンブリのセットアップに失敗したことだけです。

私がここに欠けているものはありますか?実行時にアプリケーションがまだ古いアセンブリを参照している理由として考えられるものは何ですか?

更新:いくつかのツールを使用して、アプリケーションによって参照されているネイティブ DLL から古いアセンブリが参照されていることに気付きましたが、それがどのサード パーティの DLL であるかはわかりません。アプリケーションは大量のそれらをロードします。Fusion ログは、「Calling assembly : (Unknown)」をログに記録することで確認します。不足しているアセンブリ用。

次のステップは、間違ったアセンブリを参照している dll を見つけて修正することです。問題は、ILSpy ツールがネイティブ DLL 参照を表示せず、DLLDepends ツールがアセンブリ参照を表示しないため、2 つをリンクできないことです。

ありがとう

4

1 に答える 1

0

あなたが参照しようとしているライブラリはGACの一部であるはずです。あなたが試してみたいかもしれません:

  1. コントロールパネル
  2. 小さいアイコン(管理ツール)
  3. イベントビューア
  4. 応用

Windows 自体は、エラーが発生したときに参照しようとしている特定の詳細を含む例外をスローする必要があります。特にGACとは別の場合。mscoree.dllおよびmscorelib.dllライブラリをかなり簡単に磨くことができたのは、私にとってより役に立ちました。私がそれを使用したクライアントには、フレームワークが破損していたことが認められました。しかし、Event Viewer は、問題があった正確なライブラリを教えてくれました。

あなたはそれを試してみたいかもしれません。どのライブラリかわかりません。ただし、これは通常、%windir%/Assemblyフォルダー内にあるライブラリーにとって有益であることに注意してください。それが役立つことを願っています。

于 2012-11-20T00:18:52.460 に答える