无法加载指定的元数据资源
我意识到这已被问了很多次,但我似乎无法得到我的问题的底部。 我收到以下错误堆栈:
当我反映出我的dll时,我可以看到以下内容
阅读http://blogs.teamb.com/craigstuntz/2010/08/13/38628/它建议我期望在这里看到csdl,msl和ssdl文件,但它们不是。 尽管如此,它们确实存在obj Debug edmxResourcesToEmbed。
无论如何,我试图通过这样做明确地告诉web.config在哪里看:
...connectionString="metadata=res://DllName.dll/PaymentModel.csdl|res://DllName.dll/PaymentModel.ssdl|res://DllName.dll/PaymentModel.msl;provider=System.Data.SqlClient;provider ... />
这只是抛出一个错误,说它无法找到dll:
无法解析程序集“DllName.dll”。
非常类似于这个未解决的SO问题无法解析程序集Model.dll
我尝试的最后一件事是将元数据行更改为:
...connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider ... />
这扔了一个关于我不使用的sql ce的消息 - 有没有办法绕过这个?
还有什么我可以尝试吗? 或者任何人都可以看到我要去哪里? 一些额外的细节:
使用EF 6 EDMX设置为“Embedded Resource”
复制到输出目录:“不要复制”
最后在此 - 如果我将EDMX从Embedded Resource设置为EntityDeploy,那么这将在本地工作,但不会在构建服务器上构建,因为它会抛出与此SO问题完全相同的错误:
找不到要嵌入为输入文件资源的概念架构节点
但修复似乎没有帮助,而且我不能在服务器上安装.NET 4.5。
我曾经也有过一样的问题。 使用EF模型移动.edmx文件以分开程序集提到的错误导致我的头痛:“无法加载指定的元数据资源”。
EF版本6.1
解:
旧价值:
metadata=res://*/Data.DataModel.csdl
新价值:
metadata=res://*/DataModel.csdl
最初,.edmx位于项目文件夹下,我已将其移至项目的根目录。
所以我已经深究这一点,部分我认为这是我的错。 我会为我遇到的每个问题提供解决方案,以防别人帮助其他人。
无法加载指定的元数据资源问题
这是由于我将edmx模型上的“Metadata Artifact Processing”设置从“EntityDeploy”设置为“Embedded Resouce”导致的。
所以这意味着它只是将整个edmx文件文件嵌入到dll中,而不是生成ssdl,msl和csdl文件。
我想你必须将其设置为EntityDeploy才能正常工作并生成这些文件。 完美的感觉和我们的坏在这里。
无法解析程序集'DllName.dll'
安德鲁在上面的评论中解决了这个问题,谢谢你的指示。
找不到要嵌入为输入文件资源的概念架构节点
这个问题的关键确实是这样的,我们的构建服务器目前在Windows 2003上,所以不能安装.NET 4.5,本地我们使用在VS2013上运行在.NET 4.0下的EF 6.1。
然而,由于某种原因,我们需要在构建服务器上安装.NET 4.5才能构建它,即使我们没有使用任何4.5版功能并定位到.NET 4框架。
降级到EF至4.3在短期内为我们解决了这个问题。 不理想,但它的工作。
您应该指定程序集完全限定的名称和模型文件的路径(用/
分隔),而不是dll名称
connectionString="metadata=res://Name.Of.The.Assembly, Culture=neutral, PublicKeyToken=8e2e51fcf4cf363e/Payment.PaymentModel.csdl|.........."
对于ssdl
和msl