我正在制作一些需要实现插件结构的程序。 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);