实体框架代码具有强名称的dll中的第一次迁移

时间:2014-07-18 07:05:46

标签: entity-framework visual-studio nuget

我在EntityFramework中遇到迁移api的问题。我的DataContext和实体包含在dll中,具有强名称(使用证书签名),当我部署我的应用程序时,它将dll放在GAC中。因此,当我在软件包管理器控制台中使用迁移命令时,它始终使用GAC中的dll而不是项目文件夹中的dll。因此,要在模型更改后添加新迁移,我需要将dll部署到GAC,然后重新启动Visual Studio,然后运行Add-Migration。

有没有办法强制从项目中使用dll?我试图将AppDomainBaseDirectory参数与目标一起用于项目输出的Debug文件夹,但它没有帮助。

2 个答案:

答案 0 :(得分:2)

只是一个想法,但我想知道包管理器控制台是否会在你的app.config中选择程序集绑定重定向?如果你还没到任何地方,可能值得一试。

只需确保您的本地和GAC程序集具有不同的版本号,并根据以下链接将重定向信息放入迁移项目的app.config中:http://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx

答案 1 :(得分:2)

对于相同的程序集版本,GAC优先于区域设置程序集,请选中this article

要解决您的问题,请执行以下操作:

  1. 取消选中"签署程序集"在开发期间的签名选项卡中(优于重启视觉工作室)
  2. 使用Build Version Increment Add-In 手动或自动增加程序集版本以覆盖加载GAC

    如链接评论中所述,安装VS2012。

    • 安装BuildVersionIncrement_VS2010
    • BuildVersionIncrement.AddinBuildVersionIncrement.dllC:\Users\[User]\Documents\Visual Studio 2010\Addins复制到C:\Users\[User]\Documents\Visual Studio 2012\Addins
    • 修改BuildVersionIncrement.Addin <Version>10.0</Version>11.0
    • 设置程序集版本控制样式(主要,次要,构建,修订)。对于自动构建,修订段就足够了

    • Versioning style