【问题标题】:Type definition exists in two libraries类型定义存在于两个库中
【发布时间】:2013-07-21 10:40:51
【问题描述】:

我正在使用 .NET 4.5 构建一个 ASP.NET Web 表单网站。

错误...

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)。

我确实注意到错误是引用 net40 文件夹中的 EF dll 而不是 net45 文件夹。我想如果我使用 net45 版本,问题会自行解决,但我不知道如何更改该引用。我在 packages.config 文件中将“targetFramework”属性更改为 EntityFramework 包,但这没有任何区别。

我有点卡住了,因为这两种解决方案似乎都没有做任何事情。

我环顾四周,发现这里有很多帖子,人们处理过类似的问题,但没有收到任何回复。我希望有人可以提供帮助!

谢谢

G

【问题讨论】:

  • /r 开关仅在您实际在命令行上编译某些内容时适用。
  • 所以我根本不做命令行。我以为我在编译一个新的别名库?如果不是,那又是什么尝试?
  • 没有。别名仅允许您在源文件中使用不同的名称来引用引用的程序集。

标签: c# asp.net webforms asp.net-4.5


【解决方案1】:

如您所见,您在 .Net 4.5 上使用 .Net 4.0 版本的实体框架。
那是行不通的。

从 NuGet 重新安装 EF,它应该可以正常工作。

【讨论】:

  • 我正在使用 SQL Server CE 4.0 并安装了一个使 EF 能够与 CE 一起使用的包(部分问题)?不过我在包列表中没有看到它。当我去卸载 EF 包时,由于依赖问题(OAuth)而失败。根据我的经验,我发现卸载和重新安装软件包往往是一种偶然的做法,经常会破坏我的项目的稳定性并需要数小时才能重新组装它,甚至不得不从头开始重新创建项目。有没有一种方法可以重新安装不需要我“删除”当前引用的软件包?
  • 尝试手动将引用更改为指向 /net45。但是,重新安装 NuGet 包不应该是一项麻烦的任务(尽管之后您可能希望从源代码管理中恢复 web.config)。听起来你搞砸了当地的参考资料。如果您摆脱所有引用并仅从 NuGet 重新安装所有内容,那么您应该没有任何问题。
  • 我尝试更改 package.config 中的值,但没有成功。还有其他地方我应该寻找手动更改参考吗?
  • 你需要在项目中更改引用。
  • 感谢 SLaks ...我相信你并重新安装了 NuGet 包,一切似乎都很顺利。谢谢!!
【解决方案2】:

其他选项对我不起作用。所做的工作是进入 \packages\EntityFramework.6.1.3\lib\ 并删除 net40 目录,然后进行全部重建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多