常见错误:未能加载文件或程序集
问题描述:
今天遇到一个挺怪的问题,采用了工厂模式后,出去找不到程序集的问题:
未能加载文件或程序集“Tianyige.SqlServerDAL”或它的某一个依赖项。系统找不到指定的文件。
解决思路:
以前遇到过这类问题,问题在于对程序集和命名空间名称混淆了,比如:命名空间叫SQLServerDAL,而程序集可能叫“Tianyige.SQLServerDAL”,或者叫成“SqlServerDAL”,都会发生找不到对象的错误。解决方法是对应好程序集的名称:
Assembly.Load("Tianyige.SqlServerDAL").CreateInstance("Tianyige.SqlServerDAL.Category");通过bin文件夹下找到相应的DLL,确定其名称。
而这次名称对应好了,看得我眼都花了,一点错没有,还是有问题。最后将错误提示中的文件的dll文件[Tianyige.SqlServerDAL]复制到网站APP下的bin目录中,问题得以解决。
反思:
为什么非要拷到APP下的bin文件夹里呢?是不是因为APP里生成时要直接调用Tianyige.SQLServerDAL?
以后还可能会遇到类似的问题,继续研究关注......
今天遇到一个挺怪的问题,采用了工厂模式后,出去找不到程序集的问题:
未能加载文件或程序集“Tianyige.SqlServerDAL”或它的某一个依赖项。系统找不到指定的文件。
解决思路:
以前遇到过这类问题,问题在于对程序集和命名空间名称混淆了,比如:命名空间叫SQLServerDAL,而程序集可能叫“Tianyige.SQLServerDAL”,或者叫成“SqlServerDAL”,都会发生找不到对象的错误。解决方法是对应好程序集的名称:
Assembly.Load("Tianyige.SqlServerDAL").CreateInstance("Tianyige.SqlServerDAL.Category");通过bin文件夹下找到相应的DLL,确定其名称。
而这次名称对应好了,看得我眼都花了,一点错没有,还是有问题。最后将错误提示中的文件的dll文件[Tianyige.SqlServerDAL]复制到网站APP下的bin目录中,问题得以解决。
反思:
为什么非要拷到APP下的bin文件夹里呢?是不是因为APP里生成时要直接调用Tianyige.SQLServerDAL?
以后还可能会遇到类似的问题,继续研究关注......