.net 无法解析程序集模型.dll
我有一个使用实体框架的类库项目,它工作得很好,直到我将模型移到一个单独的类库类型项目 在我将模型移出一个名为model的单独类库项目后,我将app/web.config中的连接字符串更改为:.net 无法解析程序集模型.dll,.net,entity-framework,reflection,.net,Entity Framework,Reflection,我有一个使用实体框架的类库项目,它工作得很好,直到我将模型移到一个单独的类库类型项目 在我将模型移出一个名为model的单独类库项目后,我将app/web.config中的连接字符串更改为: <add name="GlobalizationEntities" connectionString="metadata=res://Model.dll/Models.ResourceGlobalizationModel.csdl| res://Model.dll/Models.ResourceGl
<add name="GlobalizationEntities"
connectionString="metadata=res://Model.dll/Models.ResourceGlobalizationModel.csdl|
res://Model.dll/Models.ResourceGlobalizationModel.ssdl|
res://Model.dll/Models.ResourceGlobalizationModel.msl;
provider=System.Data.SqlClient;
provider connection string="
Data Source=MyComputer\sqlexpress;
Initial Catalog=DaDatabase;
Integrated Security=true;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
我尝试了两个客户端的场景,即一个控制台应用程序和一个MVC应用程序
虽然控制台应用程序甚至不会将
BusinessObjects.dll
及其引用的dll,即Model.dll
复制到控制台应用程序的bin
目录,但MVC应用程序会这样做。然而,他们似乎根本找不到Model.dll
程序集,并提出了上述FileNotFoundException
我认为问题在于EF ConStr。通常,当您想要使用嵌入式资源时,应按如下方式设置元数据
:
Metadata=res://<assemblyFullName>/<resourceName>.
Metadata=res://1)更改res://Model.dll/
至res://Model/
(不带“.dll”扩展名)在连接字符串的所有位置。您还可以指定程序集的全名,例如:res://Model,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null/
(更多信息请访问:
2) 接下来,确保以下命名空间有效:Model.Models.ResourceGlobalizationModel
。如果没有,请相应地更改连接字符串和/或程序集名称。我已将Ecom.edfx
EF模型移动到它自己的文件夹(Ecom
)。
如果生成的EF连接字符串的元数据设置如下,请签入Web.config
/(app.config
)
<add name="EcomEntities" connectionString="metadata=res://*/Ecom.Ecom.csdl|res://*/Ecom.Ecom.ssdl|res://*/Ecom.Ecom.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="data source=****"" providerName="System.Data.EntityClient" />
(目录结构是用
(点)而不是/
(斜杠))完成的,如下res:///Ecom.Ecom.csdl(从res:///Ecom.csdl但不在自己的文件夹中)。您是否检查了平台(AnyCPU,x86)每个项目的目标框架是什么?使用Fuslogvw.exe来解决程序集解析问题。它的踪迹告诉你它在哪里找到了文件。谢谢。我试过了。Fuslogvw.exe根本不报告任何内容。和中一样,它根本不生成日志,这让我相信它只适用于编译/部署的二进制文件。我会在一个已部署的环境中测试我的项目,但这太耗费时间了。我已经解决了我的问题。我很快就会发布解决方案。时间紧迫。多谢了,你知道吗?我也有类似的问题。我的牙床也有同样的问题。如果你仔细看这个问题,那正是我已经做过的。但是你没有设置程序集。。。!正确的格式是元数据=res:///Model.dll
。我错了吗?!实体框架将程序集查找委托给.NET Framework中可用的默认程序集解析器,该解析器是反射API的一部分。您可以给它完整的程序集名称,也可以只给它一个名称。