在一解决方案下我分别建立了BLL,DALFactory,IDAL,Model,SQLServerDAL和一个网站项目,这时我用反射和工厂方法模式实现了一个从数据库访问后绑定到datalist的事例,----因为这样每次更改时都要重新更新引用-----所以我把BLL,DALFactory,IDAL,Model,SQLServerDAL这5个项目中的类文件和文件夹本身放到了网站项目的App_Code的文件夹下面------可是在执行的时候报错误如下:
未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件。
................
行 19: {
行 20: string classname = path + ".HotspotNewsSql";//HotspotNewsSql为SQLServerDAL下的一个类
行 21: return (IHotspotNews)Assembly.Load(path).CreateInstance(classname);
行 22: }
行 23: }
源文件: f:\2008062816I\App_Code\DALFactory\HotspotNewsFactory.cs 行: 21
--------------------------------
我想应该是没有bin文件的原因,找不到文件,
堆栈跟踪:
[FileNotFoundException: 未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件。]
----------------------请问这种情况如何解决呢,小弟初次用反射,请各位指教谢谢!!
webconfig:
--- <appSettings>
<add key="WebDAL" value="SQLServerDAL" />
<add key="SQLServer" value="Server=(local);DataBase=[16i];user id=sa;password=sa;"/>
</appSettings>
-----------------------
DALFactory/HospotNewsFactory.cs:
private static readonly string path = System.Configuration.ConfigurationManager.AppSettings["WebDAL"];
public static IHotspotNews CreateHotspotNews()
{
string classname = path + ".HotspotNewsSql";
return (IHotspotNews)Assembly.Load(path).CreateInstance(classname);
}
未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件。
................
行 19: {
行 20: string classname = path + ".HotspotNewsSql";//HotspotNewsSql为SQLServerDAL下的一个类
行 21: return (IHotspotNews)Assembly.Load(path).CreateInstance(classname);
行 22: }
行 23: }
源文件: f:\2008062816I\App_Code\DALFactory\HotspotNewsFactory.cs 行: 21
--------------------------------
我想应该是没有bin文件的原因,找不到文件,
堆栈跟踪:
[FileNotFoundException: 未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件。]
----------------------请问这种情况如何解决呢,小弟初次用反射,请各位指教谢谢!!
webconfig:
--- <appSettings>
<add key="WebDAL" value="SQLServerDAL" />
<add key="SQLServer" value="Server=(local);DataBase=[16i];user id=sa;password=sa;"/>
</appSettings>
-----------------------
DALFactory/HospotNewsFactory.cs:
private static readonly string path = System.Configuration.ConfigurationManager.AppSettings["WebDAL"];
public static IHotspotNews CreateHotspotNews()
{
string classname = path + ".HotspotNewsSql";
return (IHotspotNews)Assembly.Load(path).CreateInstance(classname);
}
是的,我把先前的bin文件引用进来是可以的但是这和第一次做的效果一样啊,还是要分开实现啊
看看是不是少了
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\new16i\f1efa2b1\836f863d\App_Code.dll--这是我把他添加引用:
报错如下:(这时App_Code的原文件没有删除)
编译器错误信息: CS0433: 类型“HotspotNews”同时存在于“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\new16i\8aaaecff\3af30565\App_Code.1sa4hpel.dll”和“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\new16i\8aaaecff\3af30565\assembly\dl3\aa69e582\00b403fd_2fd8c801\App_Code.DLL”中
源错误:
行 14: protected void Page_Load(object sender, EventArgs e)
行 15: {
行 16: HotspotNews [] hot = (new HotspotNewsBLL()).GetHotspotNewsBLL();//这句报错
行 17: DataList1.DataSource = hot;
行 18: DataList1.DataBind();
源文件: f:\NEW16I\Default.aspx.cs 行: 16
如果把App_Code的原文件删除:报错同上
未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件。
................
怎么解决啊各位??????????????????????????
右键点击SQLServerDAL,再点属性,
查看“应用程序”,看看“程序集名称”和“默认命名空间”是否正确。
我也遇到过这个问题,就这么解决的。
<add key="WebDAL" value="SQLServerDAL.dll" />
<add key="SQLServer" value="Server=(local);DataBase=[16i];user id=sa;password=sa;"/>
</appSettings>
========
从该 WebSite 添加这些 project 的 Reference,如此 Rebuild 这些project,会更新 dll 至 webSite 的 bin 文件夹其他方式方式包括在 postbuild 事件中添加脚本,将需要的文件 copy 到 website 的目录(此法不建议!)
可是在执行的时候报错误如下:
未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件。
========
按你的加载Assembly方法,相关的 dll 需要驻留在 bin 目录中