我正在构建一个 C# .net 3.5 应用程序。
我有一个引用 dll 'CommonDll' 的 exe 'MainApp'
CommonDll 动态加载另一个 dll 'LoadedDll' 并动态调用名为 func() 的方法。
“LoadedDll”引用了“CommonDll”
在“CommonDll”中有一个方法 foo(),func() 正在调用该方法。
func()
{
foo();
}
所以,我们到目前为止:
MainApp ==> CommonDll ==动态==> LoadedDll
LoadedDll ==> CommonDll。
一切正常,直到我更改方法 foo() 以获得布尔参数: foo(bool val); 并将“LoadedDll”中的 func() 更改为
func()
{
foo(true);
}
我在 1.0 版中有 MainApp(引用旧的 CommonDll),在 1.1 版中有 LoadedDll(引用新的 CommonDll)
出于某种原因,我在方法 foo 上得到一个“MethodNotFound Excepion”,说它找不到获得布尔参数的 foo。
为什么会这样?LoadedDll 使用的是对更新后的 CommonDll 的静态引用,那么为什么找不到该方法呢?
此外,异常并不是说它找不到动态加载的 'func()' 方法,而是说它找不到 foo 方法。
编辑:
我在 GAC 中查找了 dll,但它不存在,是否还有另一个原因是为什么将加载已经在内存中的旧 dll 而不是新的?