第三者がアンマネージコードをコンパイル(のx86/x64の分離)とプラットフォームのいずれかのために管理C#.NET DLLを提供する(のx86/x64の分離):2つの管理対象x86/x64 dllを1つの管理対象AnyCpuライブラリに結合する方法はありますか?
- FooManaged_x86.dll
- FooManaged_x64.dll
これは私が受け取るものです(ネイティブコードでも管理されていないDLLでもありません)。
次に、x86またはx64のいずれかをターゲットとするC#.NETアプリケーション(またはライブラリ)を作成し、対応する管理対象DLLを直接参照することができます。
私のアプリケーションはAnyCpu(私の目標)をターゲットとすることができ、x64 dll(コンパイラの警告が間違っている)を参照し、x64として実際に動作するときにのみ動作します。ここでも、これは特定のプラットフォームに結びついています。
私は(ボンネットの下にDLLIMPORTやマニュアルAssemblyLoadを使用して)実行時に動的にapproriate DLLをロードすることによって、1つのマネージDLLに(Fody.Costura付き)管理されていないのx86/x64のDLLを組み合わせることができますことを、知っています。私は大きな成功を収めてきましたが、この方法は dllで管理されています。管理されたC#から管理されたC#dllにPInvokeする必要があります。これは間違っています。
Q:管理された2つのx86/x64 dllをPInvokeなしの管理AnyCpu DLLに結合する方法はありますか?
私が知る限り、x86を参照すると、コンパイルされたターゲットがx86とx64の両方で実行できるようになります。私はあなたがAnyCpuだけでなく、あなたのプロジェクトをコンパイルできると思っています - しかし、私は完全にはわかりません。 – gilmishal
@gilmishal:テストされていませんが、多くの点でx86は良いデフォルトです。しかし、私のサードパーティのライブラリは大きなファイル/データセットで動作するので、64ビットは実際の利点を提供します。 –