当前位置:编程学习 > C#/ASP.NET >>

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

代码如下:
using System;
using System.Configuration;
using System.Collections.Generic;
using System.Reflection;  //使用.net反射
using System.Text;

using DbTask;  //引用抽象的数据访问层

namespace DALFactory
{
    public class DbTaskDriver
    {
        public ILWordTask DriveLWordTask()
        {
            string assemblyName = ConfigurationSettings.AppSettings["AssemblyName"];
            string constructor = ConfigurationSettings.AppSettings["Constructor"];
            return (ILWordTask)Assembly.Load(assemblyName).CreateInstance(constructor, false);//这句出错
        }
    }
}

这应该是反射有错误吧,该如何解决?
我用的是VS2005,ConfigurationSettings.AppSettings提示说已过时,该怎么替换?
请高手指点! --------------------编程问答-------------------- 没人知道吗?自己顶! --------------------编程问答--------------------   1. 未能加载文件或程序集“AccessTask”或它的某一个依赖项。系统找不到指定的文件

  一般是你没有引用它,或者缺少这个..再找找看

  2. ConfigurationSettings.AppSettings提示说已过时.

  string assemblyName   = ConfigurationManager.ConnectionStrings["AssemblyName"].ConnectionString; 


  这样就行了,. --------------------编程问答-------------------- 使用Assembly.LoadFrom代替Load。
Load需要指定依赖关系,默认采用当前程序的,可能会使加载时找不到依赖项,比如Load("B.dll"),而B.dll依赖于一个不在当前程序搜索目录的A.dll(常见场景是B引用了A),这时就会有lz的问题。
LoadFrom会自动搜索这些信息。 --------------------编程问答-------------------- 谢谢zhangjjhua:
过时的问题已经搞定了;

lalac:
已经改成了return (ILWordTask)Assembly.LoadFrom(assemblyName).CreateInstance(constructor, false);
又出现了这个错误“未能加载文件或程序集“file:///E:\web\asp.net\TraceLWord\AccessTask”或它的某一个依赖项。拒绝访问。”
是不是其他的什么地方还要修改?
--------------------编程问答-------------------- 文件写全名,带后缀试试 --------------------编程问答-------------------- 不太明白,具体在哪里改,能详细说说吗?
我把代码贴出来:
DbTaskDriver.cs
using System;
using System.Configuration;
using System.Collections.Generic;
using System.Reflection;  //使用.net反射
using System.Text;

using DbTask;  //引用抽象的数据访问层

namespace DALFactory
{
    public class DbTaskDriver
    {
        public ILWordTask DriveLWordTask()
        {
            string assemblyName = ConfigurationManager.AppSettings["AssemblyName"];
            string constructor = ConfigurationManager.AppSettings["Constructor"];
            return (ILWordTask)Assembly.Load(assemblyName).CreateInstance(constructor, false);
        }
    }
}

Web.Config
...
<appSettings>
    <add key="AssemblyName" value="AccessTask"/>
    <add key="Constructor" value="AccessTask.LWordTask"/>
  </appSettings>
...

ILWordTask.cs
using System;
using System.Collections.Generic;
using System.Text;

using Classes;  //引用实体规范层

namespace DbTask
{
    public inte易做图ce ILWordTask
    {
        LWord[] ListLWord();

        void PostLWord(LWord newLWord);
    }
} --------------------编程问答-------------------- 终于搞定了~! --------------------编程问答-------------------- 对了,你的AccessTask程序集存在吗?没有的话肯定就可以看到FileNotFoundException,此时你需要把AccessTask程序集copy到bin目录。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,