2013-07-22 1 views
15

.NET 4.5を使用してASP.NET WebフォームWebサイトを構築しています。タイプ定義が2つのライブラリに存在する

エラー...

The type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' exists in both 'f:\Projects\web sites\RC1Iteration05\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll' and 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ComponentModel.DataAnnotations.dll' 

は私が...

csc /r:EF_DataAnnotations="f:\Projects\web sites\RC1Iteration05\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll" /r:CM_DataAnnotations="c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.ComponentModel.DataAnnotations.dll" 

を使用してライブラリを別名しようとしたが、これは唯一以降も同様に混乱しています「が指定されていませんソースファイル」になりましたソースファイルは指示された(here & here)として指定されました。

私は、エラーがnet45フォルダではなくnet40フォルダのEF dllを参照していることに気付きました。問題を解決するnet45のバージョンを使用していた場合、私はその参照を変更する方法がわかりません。私は "targetFramework"属性をpackages.configファイル内のEntityFrameworkパッケージに変更しましたが、それは何の違いもありませんでした。

解決策の両方が何もしていないように思われたため、ちょっと立ち往生しました。

私は周りを見回し、人々が同様の問題に対処したが、何の応答も受けなかった多くの記事をここで見つけました。助けてくれる人がいることを願っています!

おかげ

G

+0

'/ r'スイッチは、実際にコマンドラインで何かをコンパイルしているときにのみ適用されます。 – SLaks

+0

私はコマンドラインをまったくやっていません。私は新しいエイリアスライブラリをコンパイルしていたと思った?そうでなければ何をしようとしていたのでしょうか? –

+0

いいえ。エイリアスを使用すると、ソースファイル内の別の名前を使用して参照先のアセンブリを参照することができます。 – SLaks

答えて

36

あなたが気づいたようには、.NET 4.5のEntity Frameworkの.NET 4.0のバージョンを使用しています。
これは動作しません。

NuGetからEFを再インストールしても問題ありません。

+0

SQL Server CE 4.0を使用していて、EFをCEで使用できるようにしたパッケージをインストールしました(問題の一部)?私はパッケージリストには表示されません。 EFパッケージをアンインストールすると、依存関係の問題(OAuth)が原因で失敗しました。私の経験では、パッケージのアンインストールと再インストールはヒットまたはミスの練習になりがちで、プロジェクトを頻繁に不安定にしたり、再アセンブルしたり、最初からプロジェクトを再作成する必要があります。現在の参考文献を「知る」必要がないパッケージを再インストールする方法はありますか? –

+0

/net45を参照するように参照を手動で変更してください。しかし、NuGetパッケージを再インストールするのは面倒な作業ではありません(後でソース管理から 'web.config'を復元することもできます)。あなたの地元の参考文献を台無しにしたようです。すべてのリファレンスを取り除き、NuGetからすべてを再インストールすれば、何の問題もないはずです。 – SLaks

+0

私はpackage.configの値を変更しようとしましたが、うまくいきませんでした。手動で参照を変更する必要がある別の場所がありますか? –

6

他のオプションは私のためには機能しませんでした。何が\ packages \ EntityFramework.6.1.3 \ lib \に行き、net40ディレクトリを削除してから、すべてを再構築していましたか?

関連する問題