Ich habe eine .Net-App, die als "Any CPU" kompiliert wurde. Ich verwende es auf einem x64-Betriebssystem, so dass es als 64bit läuft. Die Anwendung lädt andere vom Benutzer bereitgestellte Assemblys. Es verwendet natürlich die Reflexion, um Typen von der vom Benutzer bereitgestellten Assembly zu lesen. Alles funktioniert gut, wenn die Benutzerbaugruppe als "Beliebige CPU" kompiliert wird. Aber wenn die Assembly als x86 kompiliert wird, bekomme ich die "Dies ist keine Win32-Anwendung" Ausnahme zum Zeitpunkt der Reflektion. Es ist offensichtlich aufgrund der Tatsache, dass die Host-App 64bit läuft.Reflektieren über eine x86-Baugruppe von einer "Any CPU" -Anwendung auf x64-Bit-Betriebssystem
Meine Frage ist, wie kann ich das umgehen? Irgendwelche Gedanken/Ideen?
Danke
Wenn ich 32bit ausführen, werde ich Probleme mit Assemblys, die 64bit sind, die ich auch habe einen Fall haben. Ich könnte versuchen, mit ReflectionOnly laden und sehen, ob das funktioniert. Alles, was ich tun muss, ist nur über die Baugruppe nachzudenken, um Typen zu lesen. Ich führe eigentlich nichts aus. Nun ... Ich muss Attribute nachschlagen, das kann ein Problem sein, da es nachschlagen führt es aus:/ – Nazeeh
Eine 64-Bit nur .Net-Assembly ist unglaublich selten in meiner Erfahrung, sie sind fast immer Mixed-Modus. Sie tun vielleicht Arbeit, die sie verwendet, aber überlegen, ob Sie sich kümmern müssen. Das Lesen von Typen/Attributen ist etwas, das Cecil für dich tun wird, also schlage ich vor, dass du diese Route machst ... – ShuggyCoUk