如何调试VS中的appdomain返回值

时间:2016-03-19 07:06:54

标签: c# visual-studio-2013 appdomain marshalbyrefobject

我的c#programm正在使用多个appdomains来加载/卸载程序集。 我在第二个appdomain中的程序集返回一个继承MarshalByRefObject的对象。

我现在的问题是Visual Studio告诉我它无法显示有关它的信息。

  

在此上下文中不支持获取透明代理的运行时类型。

当我在第二个应用程序域的类中时,我可以看到有关此对象的信息。

我现在的问题:是否有可能告诉Visual Studio在1. appdomain中显示有关此对象的信息?

修改

我找到了解决方案,但这只是一种解决方法。 我从/到json序列化和反序列化对象以获得干净的副本。

var info = Proxy.GetAssemblyInfo(assemblyPath, typeof(IMyAssembly));
#if DEBUG //just to have a debuggable object 
    var jsonSerializer = new JavaScriptSerializer();
    var json = jsonSerializer.Serialize(info);
    info = jsonSerializer.Deserialize<AppDomainAssemblyInfo>(json);
#endif

reutrn info;

但如果有更好的解决方案请告诉我:)

编辑2:

一些代码详细解释:

var secondAppDomain = CreateAppDomain();

AppDomainLoaderProxy proxy = appDomain.CreateInstanceAndUnwrap(typeof(AppDomainLoaderProxy).Assembly.FullName, typeof(AppDomainLoaderProxy).FullName) as AppDomainLoaderProxy;

var myReturnValue = proxy.getSomeInformation();

//myReturnValue is not debuggable. When I add this to watch-list, VS tells me:
//Obtaining the runtime type of a transparent proxy is not supported in this context.

0 个答案:

没有答案