0

私は TaskDialogs が大好きで、頻繁に使用していますが、Windows フォーム クラスの外でそれらを呼び出すのに問題があります。
Winforms クラスでは、次のように簡単に呼び出すことができます。

new Microsoft.WindowsAPICodePack.Dialogs.TaskDialog().Show();

したがって、アプリケーションの実行中に例外がスローされた場合に一般的なエラー メッセージを表示するために、同じ行を static に記述しましたProgram.Main()

try
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}
catch (Exception exception)
{
    // TODO: Show error message here
    new Microsoft.WindowsAPICodePack.Dialogs.TaskDialog().Show();
}

しかし、このダイアログが表示されるべきとき、私はNotSupportedExceptionatを取得し.Show()ます:

TaskDialog 機能はバージョン 6 の comctl32.dll をロードする必要がありますが、現在別のバージョンがメモリにロードされています。

app.manifestassemblyIdentityバージョンを 6.0 に定義することがプロジェクト ファイルに含まれています。

私はいくつかの調査を行い、 TaskDialog が を必要とする可能性があることを発見しましたが、非オブジェクトをApplicationContext渡す方法がわかりません。Windows.Form

この問題を回避するにはどうすればよいですか? ご提案ありがとうございます。


(TaskDialog で頻繁に発生する問題については、さまざまな NuGet バージョンでこれをテストしましたがWindowsAPICodePack、同じ結果が得られました。再現性を高めるために:Install-Package WindowsAPICodePack-CoreShell. よろしく)

4

0 に答える 0