您的位置:首页 > 数据库

未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件

2013-04-18 01:08 459 查看
asp.net写的工厂模式架构web项目

利用反射工厂,动态生成程序集

其实错误原因还是在创建工厂模式,利用System.Configuration动态反射,对动态反射的理解不够清晰,造成这个错误

项目创建好,生成解决方案,全部成功,但是弹出:


未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件

很是奇怪
网上搜索了一下,很多人遇到这样的问题

命名空间SQLServerDAL,要与Web.config配置的名称相同
<appSettings file="Membership.config">
<add key="WebDAL" value="SQLServerDAL"/>
<add key="ConnectionString" value="user id=sa;password=123;Data Source=.;Initial Catalog=tb"></add>
</appSettings>


如果不一致运行会出现上述错误
我在DALFactory内创建的反射代码
public class DataAccess
{
// 查找程序集
private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
private DataAccess() { }
public static IHc Hc()
{
string className = path + ".Hc";
return (IHc)Assembly.Load(path).CreateInstance(className);
}
}


还有一种是抽象一个泛型接口方法
public class ODataAccess<T>// 创建泛型程序集,泛型接口,复用性强省去很多重复代码
{
private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
public static T Get()
{
string className = path + "." + typeof(T).Name.Substring(1);
object objType = Assembly.Load(path).CreateInstance(className);
return (T)objType;
}
}


解决方法是对应好程序集的名称:Assembly.Load(“SQLServerDAL.dll").CreateInstance(className);通过bin文件夹下找到相应的DLL,确定其名称。

上述两个反射代码均是正确的。
只是
我程序出现的这个错误是因为我的UI层没有bin文件夹,需要建立bin文件夹,添加项目引用。把项目引用添加后,运行成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐