学习三层模式中遇到未能加载文件或程序集“Adtion.DAL.SqlServer”……”的原因和解析
2008-05-07 18:38
411 查看
仿照PetShop学习三层模式总结:
新建如下五个项目,他们的依赖关系如下:
1. BLL 依赖于---Model, IDAL, DALFactory
2. DALFactory 依赖于---IDAL, System.configuration
3. IDAL 依赖于---Model
4. DAL 依赖于---DBUtility, Model,IDAL
5. Model 依赖于---无
6. DBUtility 依赖于---System.configuration
7. 一个网站(文件系统)
也就是说要要这样子引用:BLL项目引用Model,IDAL,DALFactory这几个项目
在新建项目时,项目属性中的程序集名称和默认命名空间要指定为要调用的命名空间,如在项目DAL中,右键点属性:
作如下设置:
才可以找到程序集,设置成下面的形式:
才能在DataFactory中这样子调用:
public static Adtion.IDAL.IStaff_Unit CreateStaffUnit()
...{
//获取程序集的路径
string path = ConfigurationManager.AppSettings["WebDAL"];//(获取网站Web.config中<appSettings>配置节中名为“WebDAL”那一项的值)
// 获取要实例化的类的完整名字:命名空间+ ". "+ 类名(注意,因为我们设置了命名空间和程序集都是Adtion.DAL.SqlServer(见上图),所以才使用 程序集+ ". "+ 类名 )
string className=path +".Staff_Unit";
//利用反射技术,动态加载指定类型(Assembly.load(path).CreateInstance (className)方法加载名为path的程序集,并创建在该程序集下在名字叫className的类的实例)
return (Adtion.IDAL.IStaff_Unit)Assembly.Load(path).CreateInstance (className);
}
其中Web.config中<appSettings>配置节中的配置如下:
<add key="WebDAL" value="Adtion.DAL.SqlServer"/>
如果大家配置好项目属性如图为所示,自然在执行Assembly.Load
(path).CreateInstance (className)方法是能执行通过:找到名为Adtion.DAL.SqlServer的程序集,实例化其中名为Adtion.DAL.SqlServer.Staff_Unit的类;
否则,会弹出“未能加载文件或程序集“Adtion.DAL.SqlServer”……”的错误信息
注:比如你的项目属性配置如下
虽然你的 Staff_Unit 类是这样写在命名空间Adtion.DAL.SqlServer:
namespace Adtion.DAL.SqlServer
...{
class Staff_Unit : IStaff_Unit
...{
}
}
也会报错:未能加载文件或程序集“Adtion.DAL.SqlServer”……”,因为如上图(第二个图)配置,这时你真正的程序集为"SqlSeverDAL",而不是配置文件中<add key="WebDAL" value="Adtion.DAL.SqlServer"/>的 Adtion.DAL.SqlServer。
新建如下五个项目,他们的依赖关系如下:
1. BLL 依赖于---Model, IDAL, DALFactory
2. DALFactory 依赖于---IDAL, System.configuration
3. IDAL 依赖于---Model
4. DAL 依赖于---DBUtility, Model,IDAL
5. Model 依赖于---无
6. DBUtility 依赖于---System.configuration
7. 一个网站(文件系统)
也就是说要要这样子引用:BLL项目引用Model,IDAL,DALFactory这几个项目
在新建项目时,项目属性中的程序集名称和默认命名空间要指定为要调用的命名空间,如在项目DAL中,右键点属性:
作如下设置:
才可以找到程序集,设置成下面的形式:
才能在DataFactory中这样子调用:
public static Adtion.IDAL.IStaff_Unit CreateStaffUnit()
...{
//获取程序集的路径
string path = ConfigurationManager.AppSettings["WebDAL"];//(获取网站Web.config中<appSettings>配置节中名为“WebDAL”那一项的值)
// 获取要实例化的类的完整名字:命名空间+ ". "+ 类名(注意,因为我们设置了命名空间和程序集都是Adtion.DAL.SqlServer(见上图),所以才使用 程序集+ ". "+ 类名 )
string className=path +".Staff_Unit";
//利用反射技术,动态加载指定类型(Assembly.load(path).CreateInstance (className)方法加载名为path的程序集,并创建在该程序集下在名字叫className的类的实例)
return (Adtion.IDAL.IStaff_Unit)Assembly.Load(path).CreateInstance (className);
}
其中Web.config中<appSettings>配置节中的配置如下:
<add key="WebDAL" value="Adtion.DAL.SqlServer"/>
如果大家配置好项目属性如图为所示,自然在执行Assembly.Load
(path).CreateInstance (className)方法是能执行通过:找到名为Adtion.DAL.SqlServer的程序集,实例化其中名为Adtion.DAL.SqlServer.Staff_Unit的类;
否则,会弹出“未能加载文件或程序集“Adtion.DAL.SqlServer”……”的错误信息
注:比如你的项目属性配置如下
虽然你的 Staff_Unit 类是这样写在命名空间Adtion.DAL.SqlServer:
namespace Adtion.DAL.SqlServer
...{
class Staff_Unit : IStaff_Unit
...{
}
}
也会报错:未能加载文件或程序集“Adtion.DAL.SqlServer”……”,因为如上图(第二个图)配置,这时你真正的程序集为"SqlSeverDAL",而不是配置文件中<add key="WebDAL" value="Adtion.DAL.SqlServer"/>的 Adtion.DAL.SqlServer。
相关文章推荐
- 未能加载文件或程序集“*.DALSQLServer”的原因和解决办法
- 未能加载文件或程序集“Com.JJHua.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件
- 未能加载文件或程序集“Microsoft.SqlServer.BatchParser”或它的一个程序集
- 未能加载文件或程序集microsoft.sqlserver.management.sdk.sfc,Version=11.0
- visual studio2008中:未能加载文件或者是程序集”Microsoft.SqlServer.Manage,ent.SdkSfc…”
- 解决 vs2010 连接sql 2005 时 报错未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。系统找不到指定的文件的解决办法
- 未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral, PublicKeyToken
- Mssql未能加载文件或程序集“Microsoft.SqlServer.Sqm, 未能加载文件或程序集“Microsoft.SqlServer.Sqm, Version=10.0.0.0, Cultu
- 无法添加数据库未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080c
- 解决“未能加载文件或程序集Microsoft.SqlServer.SqlEnum,”的思路及解决过程
- visual studio2008中:未能加载文件或者是程序集”Microsoft.SqlServer.Manage,ent.SdkSfc…”
- DALFactory出现"未能加载文件或程序集“Flashlm.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToke
- 未能加载文件或程序集“Microsoft.SqlServer.Sqm, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的文件。 (SqlMgmt)
- 解决 vs2010 联接sql 2005 时 报错未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc
- VS2012不能创建数据库连接出现或者连接数据库时提示:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, C
- 解决 vs2010 连接sql 2005 时 报错未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc
- 未能加载文件或程序集“Microsoft.SqlServer.Sqm, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc
- VS2008连接sqlce出现:未能加载文件或程序集 Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0