Как показать 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
, С уважением)