代码优先迁移MissingManifestResourceException

时间:2012-09-14 03:31:18

标签: entity-framework entity-framework-5 ef-migrations

我目前正在为新数据库创建InitialCreate迁移。我是这个迁移框架的新手,并且不确切知道它生成了什么,我一直在运行update-database来查看结果,删除数据库,然后在进行一些更改后再次运行update-database以查看结果。

现在两次我做了一些更改,去运行更新并得到这样的错误:

  

应用基于代码的迁移:201209121936571_InitialCreate。   System.Resources.MissingManifestResourceException:找不到适合指定文化或中性文化的任何资源。确保在编译时将“$ assemblyName $ .resources”正确嵌入或链接到程序集“$ assemblyName $”中,或者所有所需的附属程序集都是可加载和完全签名的。      在[StackTrace]

然后用

结束红色
  

无法找到适合指定文化或中性文化的任何资源。确保在编译时将“$ assemblyName $ .Migrations.InitialCreate.resources”正确嵌入或链接到程序集“$ assemblyName $”中,或者所有所需的附属程序集都是可加载和完全签名的。

我第一次遇到此问题时,我删除了迁移文件夹,运行enable-migrations重新进行了更改,并且能够运行迁移。

它再次发生,我不想每次发生这种情况时都要重新创建文件。有谁知道如何更正此问题以使迁移再次发挥作用?

3 个答案:

答案 0 :(得分:7)

对我来说,解决方案是在投影的.csproj文件中的<PropertyGroup>内添加以下代码

<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>

在Update-Database命令正常工作之后。

答案 1 :(得分:2)

我最终在把所有想要提问的信息汇集在一起​​的过程中弄清楚了这一点。即,试图重现这个问题。

事实证明,如果你有一个DbMigration的继承者之外的类作为文件中的第一个类,那么Resource文件将取另一个类的名称,而不是打破迁移的迁移。

我已提交错误报告here

答案 2 :(得分:0)

我遇到了实体迁移,实体6.4和Full .Net Framework中的Microsoft.Net.SDK样式项目的问题。

我通过使用以下命令编辑Data项目来解决它:

  <ItemGroup>
    <EmbeddedResource Update="**\*.resx">
      <DependentUpon>$([System.String]::Copy('%(FileName)')).cs</DependentUpon>
    </EmbeddedResource>
  </ItemGroup>