メイン実行可能プログラムを実行する.NETアプリケーション(VB Winforms)があります。起動時に、この実行ファイルはプラグインを検索し、System.Reflection.Assembly.Load()を使用してロードします。CEFSharp Winforms(x86)を配布 - AnyCPUとしてアプリケーションを保ちようとしています
次に、インターフェイスを使用してプラグインのメニューアイコンをメインアプリケーションのアイコンバーに追加します。表示されます..あなたは考えを得る。
現在、このアプリケーションは、AnyCPUのターゲットプラットフォームで動作しています。この背後にある私の考えは、アプリケーションが両方のx86/x64プラットフォームで動作するようにすることでした。 x86にインストールされている場合、2GBのメモリ制限がありますが、x64でも利用でき、自由に動作します(これはどのように動作するのですか?)
今、私のWebサイトのヘルプファイルを埋め込みブラウザ - 私はCEFSharp Chromium Browserを選択しましたが、それはうまく機能しますが、CEFSharpは、特定のx86またはx64のいずれかのターゲットプラットフォームを持っていなければなりません。
私はブラウザを保持し、このプロジェクトをx86のターゲットプラットフォームに設定するプラグインを作成しました(64ビットオペレーティングシステムではx86アプリケーションを実行できます - これは両方で動作するはずです)私はので、私は次のエラーを取得するかがアプリケーションにこのプラグインは:
Could not load file or assembly 'XIBrowser.dll' or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)"} System.BadImageFormatException: {"Could not load file or assembly 'XIBrowser.dll' or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)"}
私がすべて失う意味のx86のプラットフォームをターゲットに設定されているメインのアプリケーションせずにプロジェクトを読み込むことができないことが表示されますx64ビットOS上で実行する利点
だからこの周りには方法がありますか?私はx86とx64用の2つのバージョンのアプリケーションを維持したいとは思っていません。
誰もCEFSharpを実行する方法のアイデアを持っていますが、私のAnyCPUターゲットを保持していますか?
回避策はありません。 64ビットプロセスで32ビットDLLをロードすることも、その逆もできません。すべての依存関係のビット数は、アプリケーションのビット数と一致する必要があります。ちょうど32ビットをターゲットにします。 WinFormsアプリケーションで2GB以上のRAMが必要となる可能性は非常に低いです。 –
https://github.com/cefsharp/CefSharp/issues/1714 – amaitland
短期的には、メモリが重要な場合は、実行可能ファイルに 'largeaddressaware'フラグを設定し、メモリの' 3GB 'に対処します。 http://stackoverflow.com/questions/1346480/how-to-make-a-net-application-large-address-aware – amaitland