32ビットと64ビットの両方のDLLを同じ.netプロジェクトで組み合わせることはできますか? は、私はこのエラーを取得する:32ビットと64ビットの両方のアセンブリを含むプロジェクトで.net Webサービスを実行
An attempt was made to load a program with an incorrect format
32ビットと64ビットの両方のDLLを同じ.netプロジェクトで組み合わせることはできますか? は、私はこのエラーを取得する:32ビットと64ビットの両方のアセンブリを含むプロジェクトで.net Webサービスを実行
An attempt was made to load a program with an incorrect format
は確かに追加/同じプロジェクトでこのようなアセンブリを使用することが可能です。
ロード実行時にアーキテクチャが一致しないアセンブリですが、コードチェックアーキテクチャでは対応するアセンブリのクラスのみを使用することが比較的簡単です。
管理対象アセンブリのみを使用する場合は、任意のCPUプラットフォームターゲットを指定します。
プロジェクトから[DllImport]を介してネイティブライブラリのみを使用する場合、プロジェクトに異なる名前の両方を含めるだけです(例: native.x86.dll
とnative.x64.dll
、および同様のコードで適切な選択:
[DllImport("native.x86.dll")]
public static extern int ExtrernalFunc86();
[DllImport("native.x64.dll")]
public static extern int ExtrernalFunc64();
// ....
if (IntPtr.Size == 8) return ExternalFunc64();
else return ExternalFunc86();
あなたは(同じAPIを持つ)特定のCPUを対象に管理ライブラリを使用する場合は、(それらのいずれかを参照することが、出力フォルダの両方にコピーすることができますビルドスクリプトを使用して)適切なバージョンをAppDomain.CurrentDomain.AssemblyResolve
イベント(IntPtr.Size
を使用してアーキテクチャをチェック)