Как показать TaskDialog вне формы Windows в C#? (Comctl v6 не загружен)

Я люблю TaskDialogs и довольно часто их использую, но у меня возникают проблемы с их вызовом вне класса Windows Form.
В классе 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();
}

Но когда этот диалог должен быть показан, я получаю NotSupportedException в .Show():

Функция TaskDialog должна загрузить версию 6 файла comctl32.dll, но в данный момент в памяти загружена другая версия.

app.manifest определяя assemblyIdentity версия до 6.0 включена в файл проекта.

Я провел некоторое исследование и выяснил, что TaskDialog может потребовать ApplicationContext, но я не знаю, как пройти неWindows.Form возражать против этого.

Как я могу обойти эту проблему? Спасибо за любые предложения!


(Что касается частых проблем с TaskDialog, я проверил это на разных версиях NuGet WindowsAPICodePack с тем же результатом. Для лучшего воспроизведения: Install-Package WindowsAPICodePack-Core а также Shell, С уважением)

0 ответов

Другие вопросы по тегам