最近在改一个 .NET Framework 4.6.2 的项目,依赖一个非 C#的组件,这个组件只提供 x86 和 x64 的 DLL 。 项目以前的方法是通过 DllImport 分别导入两个 DLL,x86 DLL 绑定 private method_32,x64 DLL 绑定 private method_64,然后在 public method 在运行时判断 Environment.Is64BitProcess 并转发至 method_32 还是 method_64 。
现在有两个问题:
- 有没有办法不用写这个 wrapper? 每导入一个方法都得写三个函数好麻烦;
- 在 Windows 10 ARM 系统上会用哪个方法(不考虑已经挂掉的 WinRT 了)?永远选择 x86 DLL 吗? Windows 11 ARM 有了 ARM64EC 之后会不会变成选择 x64 DLL 吗?以及这个项目升级 .NET 6 之后行为会变化吗?