0

MicrosoftEnterpriseLibraryのDataAccessApplication Block 4.1を使用しようとすると、展開で奇妙な問題が発生します。DAABを利用するWebアプリケーションの要素を使用しようとすると、次の未処理の例外が発生します。

Exception information: 
Exception type: BuildFailedException 
Exception message: The current build operation (build key Build Key[Microsoft.Practices.EnterpriseLibrary.Data.Database, DBNAME]) failed: The type initializer for 'Microsoft.Practices.EnterpriseLibrary.Data.Database' threw an exception. (Strategy type ConfiguredObjectStrategy, index 2) 

私のweb.configには、connectionStringsに関する次のセクションがあります。

    <connectionStrings configSource="data.config" />

また、data.configには、例外で参照されるDBNAMEのエントリが含まれています。

<?xml version="1.0"?>

<connectionStrings>`

<add name="dbname"
    providerName="System.Data.SqlClient"
    connectionString="[valid information here]" />

</connectionStrings>

データアクセスにDAABを使用していないアプリの部分は、問題なく同じ接続文字列を使用しているため、接続文字列が有効であることはわかっています。さらに、他の開発者のマシンだけでなく、私の開発マシンでも問題なく動作しています。これは本番サーバーへの展開時にのみ発生し、「リリース」ビルドはローカルマシンでも正常に実行されるため、そのバージョンに固有のものではありません。

おそらく本番サーバーの構成の問題だと思いますが、それが何であるかを理解できていません。Enterprise Libraryの展開に関するMSDNの記事には、アセンブリのxcopy展開が機能するはずであり、それらを/ binフォルダーに含めているため、そこからどこに進むべきかわからないと記載されています。何か案は?

4

2 に答える 2

1

さて、あなたが参照を追加するとき、それはあなたに警告を与えます。それは少なくとも私のマシンでの動作です。ですから、あなたはあなたの苦情に対する確固たる根拠を持っていません。:)

ただし、例外メッセージは完全にあいまいなので、情報をありがとうございます。

于 2009-07-12T04:29:40.153 に答える
0

ついにこれを理解した。Enterprise Library4.1にはFramework3.5が必要であり、アプリケーションの対象はFramework 2.0ですが、Visual Studio 2008を使用することで、開発マシンに3.5がインストールされています。ただし、本番サーバーとそうすることで問題は消えました。

不可解なことに、エンタープライズライブラリに依存するプロジェクトを含め、ソリューション内のすべてのプロジェクトでコンパイルの対象として2.0を明示的にターゲットにしているため、3.5を必要とするアセンブリを参照すると、少なくともコンパイル時に警告が表示されると思います。しかたがない。

于 2009-06-02T21:01:27.260 に答える