我目前正在为新数据库创建InitialCreate迁移。我是这个迁移框架的新手,并且不确切知道它生成了什么,我一直在运行update-database
来查看结果,删除数据库,然后在进行一些更改后再次运行update-database
以查看结果。
现在两次我做了一些更改,去运行更新并得到这样的错误:
应用基于代码的迁移:201209121936571_InitialCreate。 System.Resources.MissingManifestResourceException:找不到适合指定文化或中性文化的任何资源。确保在编译时将“$ assemblyName $ .resources”正确嵌入或链接到程序集“$ assemblyName $”中,或者所有所需的附属程序集都是可加载和完全签名的。 在[StackTrace]
然后用
结束红色无法找到适合指定文化或中性文化的任何资源。确保在编译时将“$ assemblyName $ .Migrations.InitialCreate.resources”正确嵌入或链接到程序集“$ assemblyName $”中,或者所有所需的附属程序集都是可加载和完全签名的。
我第一次遇到此问题时,我删除了迁移文件夹,运行enable-migrations
重新进行了更改,并且能够运行迁移。
它再次发生,我不想每次发生这种情况时都要重新创建文件。有谁知道如何更正此问题以使迁移再次发挥作用?
答案 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>