在 .NET 中,“平台目标:任何 CPU”编译器选项允许 .NET 程序集在 x64 机器上以 64 位运行,在 x86 机器上以 32 位运行。也可以使用“平台目标:x86”编译器选项强制程序集在 x64 机器上作为 x86 运行。
是否可以运行带有“任何 CPU”标志的程序集,但确定它应该在 x86 还是 x64 CLR 中运行?通常这个决定是由 CLR/OS 加载器(据我了解)根据底层系统的位数做出的。
我正在尝试编写一个 C# .NET 应用程序,它可以与其他正在运行的进程进行交互(读取:将代码注入)。x64 进程只能注入到其他 x64 进程中,x86 也是如此。理想情况下,我想利用 JIT 编译和Any CPU选项来允许使用单个应用程序注入 x64 或 x86 进程(在 x64 机器上)。
这个想法是应用程序将被编译为Any CPU。在 x64 机器上,它将作为 x64 运行。如果目标进程是 x86,它应该重新启动自身,强制 CLR 将其作为 x86 运行。这可能吗?