2

Webアプリケーションといくつかのクライアント側コードの両方で構成されるVisualStudio2012ソリューションがあります。アプリケーションの構造には、データアクセスに使用される共有クラスライブラリがあります。

クライアント側のコードは.NET4をターゲットにする必要があります。これは、.NET4.5がインストールされていない可能性のあるマシンに展開するためです。私はWebサーバーの端を制御しているので、そのために.NET4.5を想定できます。

これで、データアクセスライブラリはクライアント側とサーバー側の両方で使用する必要があるため、.NET 4のみを使用する必要があります。ただし、これにより予期しない問題が発生します。

データアクセスライブラリはEntityFrameworkを使用します。.NET 4であるため、EFバージョン4.4を使用します。ただし、WebアプリケーションはEntity Frameworkも参照する必要があり、.NET 4.5であるため、EFバージョン5.0を使用します。

これにより、アプリケーションを実行しようとすると(断続的に)エラーが発生します。(同じマシンで、VS2012からWebサイトとクライアントコードの両方を起動しています)。

ブラウザのアドレスバーにURLを入力するだけで、Webサイトは正常に機能します。データアクセスライブラリを使用して、問題なくデータを取得できます。ただし、クライアントアプリケーションを使用すると、(通常は常にではありませんが)Webエンドからサーバーエラーが返され、クライアントアプリケーション(Webエンド)がEntityFrameworkアセンブリを読み込めないことが示されます。

ファイルまたはアセンブリを読み込めませんでした'EntityFramework、Version = 5.0.0.0、...見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。

デバッガーで同じマシンで実行しているためにこれが問題になるだけなのか、それともデプロイ後にアプリケーションに影響を与えるものなのかはわかりません。

私はここで何かクレイジーなことをしていますか、それともこれでうまくいくはずですか?

4

1 に答える 1

0

これを試みる人のために:「実行」を押す前に「ソリューションのビルド」を実行する限り機能します(私の場合、クライアント側アプリケーションをデバッグモードで起動しますが、デバッグせずにWebアプリを起動します)。Webアプリもデバッグするには、明示的に起動して(右クリック、デバッグ)、クライアント側アプリを起動する(右クリック、デバッグ)必要があります。繰り返しになりますが、毎回「ビルドソリューション」が必要です(場合によっては「再ビルド」)。

編集:aaaannnndd...突然動作を停止しました。ただし、VS内でクライアント側アプリケーションを実行すると、WebプロジェクトのbinディレクトリにあるEF DLLが、クライアントアプリで使用されているものでビルド/更新されるため、Webサイトがすぐにバージョンの不一致が発生することがわかりました。 Webサイトは新しいバージョンを想定しているため、にアクセスします。これを解決するために、正しいバージョンのEFDLLをWebサイトのbinディレクトリにコピーするバッチファイルができました。したがって、クライアントアプリケーションを起動し、バッチファイルを実行してから、Webサイトを起動できます。苦痛ですが、少なくとも今では確実に機能します。

于 2012-10-29T12:00:09.577 に答える