web-dev-qa-db-ja.com

エンタープライズライブラリ5.0(データアクセスアプリケーションブロック)を構成しようとしたときの問題

Enterpriseライブラリ5.0からDAABを実行しようとしているときに、いくつかの問題が発生しました。チュートリアルの手順に従いましたが、エラーが発生します...

1)エンタープライズライブラリをダウンロード/インストールする

2)必要なブロックへの参照を追加します(共通/データ)

3)輸入

Imports Microsoft.Practices.EnterpriseLibrary.Common
Imports Microsoft.Practices.EnterpriseLibrary.Data

4)エンタープライズライブラリ構成ソフトウェアを介して。私は自分のサイトからweb.configを開きます。次に、[ブロック]、[データ設定の追加...]の順にクリックし、詳細を入力して保存/閉じる

5)次に(セットアップが完了したと思います)を介してデータベースのインスタンスを取得しようとします

 Dim db As Database = DatabaseFactory.CreateDatabase() 

6)コンパイルすると、次のエラーが発生します。

ファイルまたはアセンブリ 'Microsoft.Practices.EnterpriseLibrary.Data、Version = 5.0.414.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)(C:\ site\web.config行4)

Web.configの4行目は、構成ツールによって生成されたもので、次のとおりです。

<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />

必要な手順がありませんか?手順を間違った順序で実行しましたか?間違えましたか?

助けてくれてありがとう。

13
Phil

答え:

誤ってsrcコードフォルダからアセンブリを参照していました。つまり、パブリックトークンは= nullになります。 C:\ Program Files\Microsoft Enterprise Library 5.0\Binのアセンブリを再参照しましたが、問題は解決しました。

20
Phil

私はすでにあなたが答えを得たのを見ました。ただし、VSから構成ツールを開くと、参照するアセンブリを構成ツールに指示するオプションがあることを指摘したいと思います。

  1. VS2010の場合:プロパティエディターウィンドウを開き、ソリューションエクスプローラーからソリューションファイルを選択します。
  2. 「EnterpriseLibrary5 Assembly Set」オプションが表示され、署名付きバージョン(Microsoft署名済み)または署名なし(EntLibV5Src)を使用するオプションがあります

設定ツールを起動すると、選択に応じて、構成ファイル内のアセンブリを参照します。

4

@Nicolasが回答したことに加えて、Enterprise Library 5.0 dllで使用されている場合は常に、app.configのパブリックトークンを削除することでこの問題を克服できます

3
Deepesh

エンタープライズライブラリには2つのダウンロードがあります...

  • Enterprise Library5.0-ソースCode.msi
  • エンタープライズライブラリ5.0.msi

2番目のものだけが署名されたバイナリを持っています...これは「マニフェスト定義がアセンブリ参照と一致しません」エラーを解決するために必要なものです

(そして参考までに、2番目のものにはインストールすることを選択した場合のソースコードも含まれています)

2
grundt

生む

<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />                      
        <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />   
        <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />      
1
andres

おそらくあなたがする必要があるのは、プロジェクトのプロパティのターゲットフレームワークを「.NETFramework4クライアントプロファイル」から「.NETFramework4」に変更することです。

コンソールプロジェクトを最初に作成するとき、VS2010はデフォルトで「NETFramework4クライアントプロファイル」を作成します。 「.NETFramework4」でコンパイルされたEL5で、プロジェクトがELdllを解決するのに苦労しています。

1
Vadim