第三方编译非托管代码(x86/x64 分离)并为任一平台(x86/x64 分离)提供托管 C# .NET dll:
- FooManaged_x86.dll
- FooManaged_x64.dll
这是我收到的(既不是本机代码,也不是非托管 dll)。
然后,我可以创建一个针对 x86 或 x64 的 C#.NET 应用程序(或库),并直接引用相应的托管 dll - 一切都很好,但仅限于一个特定平台(不是我的目标)。
我的应用程序可以针对 AnyCpu(我的目标),引用 x64 dll(错误,编译器警告),并且只有当它实际以 x64 运行时才能工作。同样,这绑定到一个特定的平台。
我知道,我可以通过在运行时动态加载适当的 dll(在后台使用 DllImport 和手动 AssemblyLoad)将非托管x86/x64 dll(使用 Fody.Costura)合并到一个托管 dll 中。我已经非常成功地做到了这一点,但是这种方法不太适合托管dll。我将不得不从托管 C# PInvoke 到托管 C# dll - 这对我来说听起来不对。
问:有没有什么方法可以将两个托管的 x86/x64 dll 合并为一个托管的 AnyCpu dll,而无需 PInvoke?