Dans .NET, l'option de compilation "Platform Target : Any CPU' permet à une assembly .NET de s'exécuter en 64 bits sur une machine x64, et en 32 bits sur une machine x86. Il est également possible de forcer un assemblage à s'exécuter en x86 sur une machine x64 en utilisant l'option de compilation "Platform Target : x86".
Est-il possible d'exécuter un assembly avec le drapeau 'Any CPU', mais de déterminer s'il doit être exécuté dans le CLR x86 ou x64 ? Normalement, cette décision est prise par le chargeur CLR/OS (d'après ce que j'ai compris) sur la base du bitness du système sous-jacent.
J'essaie d'écrire une application C# .NET qui peut interagir avec (lire : injecter du code dans) d'autres processus en cours d'exécution. Les processus x64 ne peuvent injecter que dans d'autres processus x64, et de même avec x86. Idéalement, j'aimerais profiter de la compilation JIT et de la fonction Toute unité centrale pour permettre à une seule application d'être utilisée pour injecter dans les processus x64 ou x86 (sur une machine x64).
L'idée est que l'application soit compilée en tant que Toute unité centrale . Sur une machine x64, il s'exécuterait en tant que x64. Si le processus cible est x86, il devrait se relancer lui-même, forçant le CLR à l'exécuter en x86. Cela est-il possible ?