带有依赖项的c#Activator.CreateInstanceFrom从GAC中选择了错误的版本

时间:2016-08-03 08:16:34

标签: c# reflection gac

旧代码,例如。 Albert.dll正在进行后期绑定(使用Activator.CreateInstanceFrom)来实例化Albert类。它具有Barry的依赖性,Barry在GAC中具有各种版本(例如1-6)。 Albert引用了Barry的第3版,但在实例化时,尝试使用6(最新)并成功。但是当代码试图将Albert类作为Barry进行投射时,它失败了,并且#34;无法投射"例外。我无法添加版本提示,因为所需的版本是动态的。 Reflector犯了与.net相同的错误,引用v3,然后用v6实例化。

似乎在旧服务器上运行正常(03,.net1),但现在在新服务器上失败(2012,.net 4.6.1)。

1 个答案:

答案 0 :(得分:0)

您可以像这样完全限定类型

var type = Type.GetType("ConsoleApplication2.Albert, ConsoleApplication2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
Activator.CreateInstance(type);