无法检测已加载的引用程序集

时间:2015-11-02 11:50:37

标签: c# dynamic reflection

我正在制作一些需要实现插件结构的程序。 Loader.exe是主要的应用程序,Plugin.dll是一个插件类库。 Plugin.dll需要Depend.dll

我想强制加载Depend.dll在特定路径中,没有GAC或appdomain基目录等。我在加载Depend.dll之前使用Assembly.LoadFile预加载Plugin.dll,但是程序集无法检测加载的assembly-Depend.dll。它抛出:

  

Plugin.Start()

中的System.IO.FileNotFoundException

是否可以在不向AssemblyResolve添加事件处理程序的情况下预加载引用的程序集?

我无法使用AssemblyResolve处理程序。

Depend.dll

using System;

namespace Depend
{
    public class Hello
    {
        public void World()
        {
            Console.WriteLine("Hello, world!");
        }
    }
}

Plugin.dll

using Depend;

namespace Plugin
{
    public class Plugin
    {
        public void Start()
        {
            new Hello().World();
        }
    }
}

Loader.exe是

string path = Environment.CurrentDirectory;
Assembly.LoadFile(Path.Combine(path, "..\\Depend.dll"));
Assembly asm = Assembly.LoadFile(Path.Combine(path, "Plugin.dll"));

Type typ = asm.GetType("Plugin.Plugin");
typ.GetMethod("Start").Invoke(Activator.CreateInstance(typ), null);

0 个答案:

没有答案