当我调用AppDomain.CreateInstanceAndUnwrap来实例化另一个AppDomain中的类型时,我有一个抛出AmbiguousMatchException的应用程序。这发生在我无法直接访问的客户计算机上。我认为问题是加载了相同程序集的两个副本。有没有办法弄清楚是否是这种情况以及从哪里加载两个组件?启用融合日志会提供任何其他信息吗?
答案 0 :(得分:0)
融合日志可能有所帮助,但另一种选择可能是挂钩AssemblyLoad
事件:
AppDomain.CurrentDomain.AssemblyLoad += (s, a) =>
{
Console.WriteLine(a.LoadedAssembly.FullName);
Console.WriteLine(a.LoadedAssembly.CodeBase);
};
此错误有两个主要原因:
Some.Namespace.Type
类型当然,另一个选择是你的AppDomain
已经相互感染了(通过在API上公开引用,很容易在AppDomain
边界上意外地吸引引用MarshalByRef
对象)。