2016-08-03 6 views
0

Alter Code, z. Albert.dll wird spät gebunden (mit Activator.CreateInstanceFrom), um die Albert-Klasse zu instanziieren. Es hat eine Abhängigkeit von Barry, die in der GAC gehalten wird, mit verschiedenen Versionen (z. B. 1-6). Albert bezieht sich auf die Version 3 von Barry, aber wenn er instanziiert wird, versucht er 6 zu verwenden (spätestens) und ist erfolgreich. Wenn der Code jedoch versucht, die Albert-Klasse als Barry zu interpretieren, schlägt er mit der Ausnahme "nicht ausführbar" fehl. Ich kann Versionshinweise nicht hinzufügen, da die erforderliche Version dynamisch ist. Reflektor macht den gleichen Fehler wie .net, Referenzen v3, dann instanziiert mit v6.C# Activator.CreateInstanceFrom mit Abhängigkeiten wählt falsche Version von GAC

Scheint auf dem alten Server (03, .net1) in Ordnung zu sein, aber jetzt scheitert an neuen (2012, .net 4.6.1).

+1

Haben Sie Ihre Bindung Umleitungen in Ihrer Konfigurationsdatei überprüft? – ams4fy

+0

http://Stackoverflow.com/a/2279368/2613020 Dies kann Ihnen helfen –

+0

Verwenden Sie Fuslogvw.exe, um Probleme bei der Baugruppenauflösung zu beheben. Protokolliere alle Bindungen. Verbessere deine Frage, indem du den Trace zeigst, den du bekommst. Reflektoren machen diese Art von "Fehlern" nicht aus, sie unterliegen nicht den CLR-Richtlinien. So hohe Chancen, dass die Versammlungen in der GAC nur nicht diejenigen sind, die Sie hoffen, dass sie sind. –

Antwort

0

Sie können den Typ voll qualifizieren wie so

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