.Net程序集加载错误:“找不到指定的文件”

时间:2017-09-08 02:12:05

标签: c# .net load .net-assembly

我的运行时错误如下:

  

无法加载文件或程序集“ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”或其中一个依赖项。
  系统找不到指定的文件   “:”ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null

static void Main(string[] args)
{
    var path = @"D:\Temp\ClassLibrary1.dll";

    AppDomain other = AppDomain.CreateDomain("other");
    Type myType = typeof(AssemblyLoader);           
    AssemblyLoader loader = (AssemblyLoader)other.CreateInstanceAndUnwrap(myType.Assembly.FullName, myType.FullName);

    loader.LoadAssembly(path);
    string[] types = loader.GetTypeNames();

    var ts = loader.GetTypes();

}

AssemblyLoader就像

public class AssemblyLoader:MarshalByRefObject
{
    private Assembly assembly;
    private string assemblyName;
    public AssemblyLoader()
    {          
    }      
    public void LoadAssembly(string path)
    {          
        assembly = Assembly.Load(File.ReadAllBytes(path));
        assemblyName = assembly.FullName;         
    }
    public Type[] GetTypes()
    {
        var types = assembly.GetExportedTypes();
        List<object> objs = new List<object>();
        types.ToList().ForEach(s => objs.Add(CreateInstance(s.Name)));
        return objs.Select(s => s.GetType()).ToArray();
    }
    public string[] GetTypeNames()
    {           
        return Array.ConvertAll<Type, string>(assembly.GetExportedTypes(), x => x.FullName);
    }
   public  object CreateInstance(string typeName)
    {           
        return Activator.CreateInstance(assemblyName, typeName).Unwrap();           

    }
    public override object InitializeLifetimeService()
    {
        return null;
    }
}

0 个答案:

没有答案