私はこの問題を熟考していました。
私のWPF DLLには、オープンソースのWebブラウザコントロールを使用しているカスタムコントロールクラスがあります。
カスタムコントロールの静的コンストラクタでは、AppDomain.CurrentDomain.AssemblyResolve
イベントのハンドラをセットアップしました。
そして、私のハンドラのために:ハンドラで
private static Assembly Resolver(object sender, ResolveEventArgs args)
{
if(args.Name.StartsWith("CefSharp"))
{
string assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll";
string archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "CefSharp", Environment.Is64BitProcess ? "x64" : "x86", assemblyName);
return File.Exists(archSpecificPath) ? Assembly.LoadFile(archSpecificPath) : null;
}
return null;
}
私はCefSharpアセンブリが解決されているかどうかをチェックし、もしそうなら、私のアセンブリが実行されている場合、私はに基づいて適切なアセンブリへのパスを作成64ビットプロセスで実行するかどうかを決定し、Assembly.LoadFile()
を実行します。
私はこれが役に立ちそうです!
私の質問は、あなたもする必要がありますか? DLLプロジェクトをEXEプロジェクトの参照として追加し、サードパーティのDLLの動的アセンブリ解決を行うことができますか?やってみました?エラーはありますか? – Zack
また、DLLプロジェクトをx86とx64としてビルドし、動的にロードするだけでもいいかもしれません...私は動的な解像度に関する多くの経験がないので、解決方法を考えようとしています。 – Zack
お試しくださいhttp://stackoverflow.com/questions/108971/using-side-by-side-assemblies-to-load-the-x64-or-x32-version-of-a-dll/156024#156024とhttp: //stackoverflow.com/questions/2963809/anycpu-x86-x64-for-c-sharp-application-and-its-c-cli-dependency – neohope