10

問題は、MVC4 と EF5 にアップグレードされたプロジェクト内のアセンブリのバージョン間の競合を解決する方法です。

問題は、コントローラーとモデルに System.Data.Objects を含めることができるという事実で明らかですが、現在はビューです。

私は MVC 4 を使用しています。私のプロジェクトは MVC 3 からアップグレードされました。

Entity Framework はバージョン 5 です。

System.Data.Objects から objectcontext を使用できるコントローラーがあります。

私の使用法: System.Data.Objects を使用する; System.Data.Entity の使用;

ビュー フォーム System.Data.Objects に using を含めようとすると、次のようになります。

CS0234: 型または名前空間名 'Objects' が名前空間 'System.Data' に存在しません (アセンブリ参照がありませんか?)

私は.net 4.5をターゲットにしています

マイ ビルド 次のメッセージが表示されます: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1561,5): 警告 MSB3247: 同じ依存アセンブリの異なるバージョン間で競合が見つかりました。

4

3 に答える 3

28

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

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

こちらをご覧ください。

于 2012-11-15T01:18:50.633 に答える
3

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

フスログをご存知ですか?アプリケーションの実行中に .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 -- Fusion ログ ビューア

Fusion logger をセットアップし、出力を確認します。それでも答えが得られない場合は、バインディング リダイレクトを試してください (これにより、少なくとも一時的な解決策が得られます)。

于 2012-06-27T02:41:07.923 に答える