7

現在、Enterprise Library Validation Application Block を使用しようとすると、次の例外が発生します。

検証用の構成セクション ハンドラーの作成中にエラーが発生しました: ファイルまたはアセンブリ 'Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040) (C:\Documents and Settings\My Documents\Visual Studio 2008\Projects\Testers\TestProject\web.config 行 12)

例外が何を伝えようとしているのかはわかっていますが、それを修正する方法がわかりません。Enterprise Library のバージョンを 1 つしかインストールしたことがなく、これがそれ (4.1.0.0) であるため、間違ったバージョンを見つける方法がわからないので、依存関係の問題だと思います。Enterprise Library 4.1 の「Common」、「Validation」、および「ObjectBuilder2」DLL をプロジェクトの参照として含めたので、他に何が欠けているかわかりません。ドキュメントは確かにこれが私が必要とするすべてであることを示しているようです。

依存関係の問題を追跡する方法はありますか?

役立つ場合は、Enterprise Library Configuration Tool を使用して、Entity Framework エンティティ内のデータを検証するための Validation Application Block ルール セットを作成しようとしています。Visual Studio 2008 で ASP.NET MVC を使用しています。

あなたが提供できる支援/指示に感謝します,

クリス

4

1 に答える 1

5

Fusion のログを有効にして、実行時にどのアセンブリがバインドされているかを確認します。

Hanselman は最近、ロギングを有効にして出力を調べるのに役立つはずの投稿をしました。

http://www.hanselman.com/blog/CommentView.aspx?guid=3654c8f3-c5c3-4dee-a01f-c9a8da3ef2fa

もう 1 つの重要な違いは、プロジェクトに追加される参照はコンパイル時の参照であり、厳密な名前のアセンブリが使用された場合に厳密な名前を指定する以外は、実行時にコードがバインドされる方法に影響を与えないことです。実行時に何が起こっているかを調べるには、バインディング ログを確認する必要があります。ログには、ランタイムがアセンブリを見つけるために行ったすべての試行が表示されます。アセンブリが実行可能ファイルと一緒に bin ディレクトリにない場合は、GAC を調べて予期しないバージョンを見つけている可能性があります。

アセンブリを参照する場合、コンパイラは GAC を使用しないことに注意してください。そのため、GAC にインストールしたバージョンとは異なるバージョンをプロジェクトで参照として使用している可能性があります。

また、Windows エクスプローラーを使用して C:\Windows\assembly を調べると、GAC にインストールされているバージョンを簡単に見つけることができます。エラー メッセージで指定されているバージョンは、コンパイル中に参照されたバージョンになります。これらのバージョンが一致しない場合、Fusion が実際に GAC を調べていると仮定すると、これが問題である可能性があります (Fusion ログを調べることで明らかになります)。

于 2010-01-04T20:12:15.910 に答える