C# ObjectHandle unwrap为我提供一个MarshallByRefObject对象,而不是我的类对象

C# ObjectHandle unwrap为我提供一个MarshallByRefObject对象,而不是我的类对象,c#,.net-assembly,C#,.net Assembly,我试图将程序集加载到Appdomain中,但我的ObjectHandle似乎出现了一些问题 程序集A仅包含一个类: namespace MyTestAssembly { using System; public class SomeClass : MarshalByRefObject { public virtual bool Run() { return true; } } 在程序集B中,我

我试图将程序集加载到Appdomain中,但我的ObjectHandle似乎出现了一些问题

程序集A仅包含一个类:

namespace MyTestAssembly
{
    using System; 

    public class SomeClass : MarshalByRefObject
    {
        public virtual bool Run()
        {
            return true; 
        }
}
在程序集B中,我尝试如下调用类:

        var assembly_path = "/path/to/something.dll"
        System.AppDomain appDomain = System.AppDomain.CreateDomain("MyDomain");
        System.Runtime.Remoting.ObjectHandle oh = appDomain.CreateInstanceFrom(assembly_path, "MyTestAssembly.SomeClass");
        object obj = oh.Unwrap();
        obj.GetType().InvokeMember("Run", 
            System.Reflection.BindingFlags.InvokeMethod,
            Type.DefaultBinder, obj, null);
        AppDomain.Unload(appDomain);
这给了我一个例外:

An exception of type 'System.MissingMethodException' occurred in    

mscorlib.dll but was not handled in user code

Additional information: Attempted to access a missing member.

如果我检查obj的类型,当我期望它是“SomeClass”对象时,它是MarshallByRefObject。我错过什么了吗?我试着看一些例子,似乎大多数人都是这样做的

这是一个DLL地狱问题,您加载的程序集不是您希望得到的程序集。使用Fuslogvw.exe查看这是如何发生的。感谢您的提示。所以我运行了这个程序,但遗憾的是我没有看到问题所在。我的dll中有一个WhereRefBind日志条目,里面的一切似乎都很成功,ref bind的位置是正确的(有点不确定应该寻找什么)