2012-06-26 8 views
10

問題はMVC4とEF5にアップグレードされたプロジェクトのアセンブリのバージョン間の競合を解決する方法ですか?同じ依存アセンブリの異なるバージョン間で競合が見つかりました.MVC3 - > MVC4/EF4 - > EF5

問題は、私のコントローラとモデルにSystem.Data.Objectsを含めることができますが、今は自分のビューになっていることが明らかです。私は私のプロジェクトはMVC 3

Entity Frameworkのからアップグレードされた、MVC 4を使用しています

は、バージョン5

私はSystem.Data.ObjectsからObjectContextを使用することができ、コントローラを持っています。

私の使用: using System.Data.Objects; using System.Data.Entity;

私はビューフォームSystem.Data.Objectsで使用を含めるしようとすると、私が手:

CS0234:型または名前空間名「オブジェクト」の名前空間に存在しない「System.Data」(あなたは、アセンブリ参照が不足している)

を私は、.NET 4.5

マイビルド表示し、このメッセージをターゲットにしています:? C:\ WINDOWS \ Microsoft.NET \ Frameworkの\のv4.0.30319の\のMicrosoft.Common.targetsを( 1561,5):警告MSB3247:同じ依存アセンブリの異なるバージョン間で競合が見つかりました。

+1

私はあなたの問題が何であるかは完全にはわかりませんが、私の最初の質問は、とにかくビューからobjectcontextとのやりとりを避けることができると思いますか?これは一般的には悪い考えであり、mvcパターンではあなたのビューが "ダム"になるというルールに違反します。あなたのビューに特定のロジックを表示する以外の何かを避ける必要があります。私はあなたの問題をよりよく理解できるように、あなたのビュー(またはその一部)を投稿できますか? – theMothaShip

+0

これは、私がビューで行うつもりです:@ ObjectContext.GetObjectType(item.TimelineEntry.Document.GetType())。Name.ToString(); –

+0

これはおそらく、プロジェクトで参照している他のアセンブリがエンティティフレームワークの別のバージョンを参照していて、ビルド画面にメッセージが表示される理由です。アプリケーションが1つのプロジェクトファイルだけであるか、同じソリューション内に複数のプロジェクトが存在し、エンティティフレームワークをすべて参照する場合とそうでない場合がありますか? – theMothaShip

答えて

3

ビルドメッセージを見ると、.netフレームワークの4.0バージョンが参照されています...プロジェクトファイルまたはweb/app.configに.netフレームワークの競合するバージョンを指定する設定がありますか?

あなたはfuslogをよく知っていますか?アプリケーションの実行中に.netが実行しているすべてのアセンブリバインディングをログに記録するように設定できます。その時、いつ束縛されているのかについての詳細な情報を見ることができます。それでもわからない場合は、web.configの.dllにバインドリダイレクトをいつでも行うことができます。

http://msdn.microsoft.com/en-us/library/eftw1fys.aspx - バインディングリダイレクト

http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.71).aspx - 融合ログビューア

は、融合ロガーを設定し、出力が何であるかを見てみましょう。それから回答が得られない場合は、バインディングリダイレクト(少なくとも一時的な解決策を提供する)を試してください。

+0

何を参照しているのかを知る方法がわかりません。プロジェクトのプロパティは.Net 4.5を参照しています。これをどのように追跡するのですか?参照にはSystem.Data.Entity DLLが1つしかありません。 –

+0

ビューがEntity Framework 5バージョンのsystem.data.entityにアクセスしていて、コントローラがsystem.data.objectsを持つバージョン4にアクセスしているように見えます。どうすれば1)プロジェクト全体が新しいアセンブリを使用していることを確認するのですか? 2)バージョン5のEFのオブジェクト・コンテキストを取得しますか? –

+0

奇妙 - モデルはobjectcontextにアクセスする際にも問題ありません。 –

28

診断モードでソリューションを構築して、エラーに関する詳細情報を取得することができます。

[VSオプション]ダイアログ(ツール>オプション)を開き、[プロジェクトとソリューション]ノードに移動して[ビルドと実行]を選択します。 MS Buildプロジェクトのビルド出力の詳細をDiagnosticに変更します。

hereをご覧ください。

+0

診断モードでは、他のバージョンでもどのDLLが取得されているかが正確にわかります。非常に役立ちます。 – Laurence

+4

ビルド出力を取得したら、出力ウィンドウで "conflict"という単語を検索すると問題が見つかります。 –

0

私が公開していたディレクトリに、aspnet_clientという名前のフォルダがありました。私はそれを(削除する代わりに)移動し、再公開し、それがうまくいった。なぜそのフォルダが私に青から問題を与えたのか分かりません。

関連する問題