none
使用反射动态实例化一个类,出现未能加载文件或程序集??忘高手解决一下!!! RRS feed

  • 问题

  •  

    “/”应用程序中的服务器错误。

    未能加载文件或程序集“Office.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.IO.FileNotFoundException: 未能加载文件或程序集“Office.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

    源错误:

    行 16:             //String fullName = namespaceName + "." + "CreatBLLFactory";
    行 17:             string n = System.Reflection.Assembly.GetExecutingAssembly().FullName;//.ToString();//获取当前运行的程序集的  string n = System.Reflection.Assembly.GetExecutingAssembly().ToString();//获取当前运行的程序集的
    行 18:             return (BLLFactory)System.Reflection.Assembly.Load("Office.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null").CreateInstance("Office.BLL.CreatBLLFactory");
    行 19:         }
    行 20:         //public abstract ObjectOrList CreateAccessoryFileBll();//1

    源文件: F:\MyOffice\Factory\BLLFactory.cs    行: 18

    程序集加载跟踪: 下列信息有助于确定程序集“Office.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”无法加载的原因。

    === 预绑定状态信息 ===
    日志: 用户 = 20081206-2230\Administrator
    日志: DisplayName = Office.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
     (Fully-specified)
    日志: Appbase = file:///F:/MyOffice/Office.UI/
    日志: 初始 PrivatePath = F:\MyOffice\Office.UI\bin
    调用程序集: Factory, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null。
    ===
    日志: 此绑定从 default 加载上下文开始。
    日志: 正在使用应用程序配置文件: F:\MyOffice\Office.UI\web.config
    日志: 使用 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config 的计算机配置文件。
    日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。
    日志: 相同的绑定已出现过,因 hr = 0x80070002 而失败。
    

    堆栈跟踪:

    [FileNotFoundException: 未能加载文件或程序集“Office.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。]
       System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
       System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +54
       System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +211
       System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +141
       System.Reflection.Assembly.Load(String assemblyString) +25
       Factory.BLLFactory.Instance() in F:\MyOffice\Factory\BLLFactory.cs:18
       Office.UI.index.loginButton_Click(Object sender, ImageClickEventArgs e) in F:\MyOffice\Office.UI\index.aspx.cs:36
       System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +86
       System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +115
       System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746
    


    版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433
    2008年12月10日 14:55

答案

  • 你好!
       确定那个程序集在你的站点的同一个目录下或注册到全局程序集缓存,另外需要写上公钥标记。
    2008年12月11日 4:27
    版主
  •  

    Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom(WorkingService.workingPath & "\" & sgameFile)
     Dim t As Type = asm.GetType(nms)  ' 类的全命名空间产生的type

      Dim o() As Object = { }   '参数
    Dim sglogic As GameLogics.SoloGameLogicBase = Activator.CreateInstance(t, o)

     

    按照这个方法   管他什么注册

    2008年12月11日 4:51

全部回复

  •  

    在你的ASP.NET网站服务器那台机器上打开FUSLOGVW.exe,这个程序在C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin文件夹下面,没有那个文件的话,就从别的机器上拷一个过来。

     

    然后选择"Settings",选中"Log bind failures to disk",勾上"Enable custom log path",设置"custom log path"为"C:\",点击'OK"保存设置,不要关闭FUSLOGVW.exe。

     

    然后重新访问你的页面,等错误发生以后,切换到FUSLOGVW.exe,点击“Refresh”按钮,应该会出来一些条目,双击一个条目,仔细阅读里面说明的错误原因。

     

    如果还是不能发现错误原因的话,你就把FUSLOGVW.exe记录的日志粘贴到论坛上来,我帮你看一下。

     

     

    2008年12月11日 4:10
  • 你好!
       确定那个程序集在你的站点的同一个目录下或注册到全局程序集缓存,另外需要写上公钥标记。
    2008年12月11日 4:27
    版主
  •  

    Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom(WorkingService.workingPath & "\" & sgameFile)
     Dim t As Type = asm.GetType(nms)  ' 类的全命名空间产生的type

      Dim o() As Object = { }   '参数
    Dim sglogic As GameLogics.SoloGameLogicBase = Activator.CreateInstance(t, o)

     

    按照这个方法   管他什么注册

    2008年12月11日 4:51