Skip to content

EntryPointNotFoundException when instantiating a TaskDialog #23

Closed
@Pogodaanton

Description

I followed the sample from Ookii.Dialogs.Wpf.Sample for instantiating a TaskDialog in a .NET Core 3.1 Application.

TaskDialog dialog = new TaskDialog();
dialog.WindowTitle = "Task dialog sample";
dialog.MainInstruction = "This is an example task dialog.";
dialog.Content = "Task dialogs are a more flexible type of message box. Among other things, task dialogs support custom buttons, command links, scroll bars, expandable sections, radio buttons, a check box (useful for e.g. \"don't show this again\"), custom icons, and a footer. Some of those things are demonstrated here.";
dialog.ExpandedInformation = "Ookii.org's Task Dialog doesn't just provide a wrapper for the native Task Dialog API; it is designed to provide a programming interface that is natural to .Net developers.";
dialog.Footer = "Task Dialogs support footers and can even include <a href=\"http://www.ookii.org\">hyperlinks</a>.";
dialog.FooterIcon = TaskDialogIcon.Information;
dialog.EnableHyperlinks = true;
dialog.Buttons.Add(new TaskDialogButton("A custom button"));
dialog.ShowDialog(this);

The dialog fails to open and throws the following exception:

Loaded 'C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\3.1.9\System.Drawing.Common.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Exception thrown: 'System.EntryPointNotFoundException' in Ookii.Dialogs.Wpf.dll

Not sure whether it helps but by commenting out line-by-line I could pinpoint the root of the cause to TaskDialogButton.

Activity

augustoproiete

augustoproiete commented on Nov 14, 2020

@augustoproiete
Member

Thanks for reporting this @Pogodaanton. I can reproduce the error you're seeing and I'll update the documentation with the information below.

The internal error message is

System.EntryPointNotFoundException: 'Unable to find an entry point named 'TaskDialogIndirect' in DLL 'comctl32.dll'.'

To resolve this error, you'll need to add an application manifest to your .NET Core 3.1 WPF App in order to specify that your app has a dependency on comctl32.dll.

Right click your project in Visual Studio -> Add -> New Item... and select "Application Manifest File (Windows Only)"

image

That will create a template that you can customize and delete the parts you don't want and/or uncomment the parts that you want. The crucial part is the dependentAssembly entry with the reference to Microsoft.Windows.Common-Controls

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
</assembly>

Please, let me know if this works for you and if you find any other issue.

Pogodaanton

Pogodaanton commented on Nov 14, 2020

@Pogodaanton
Author

Works flawlessly, thanks!

unpinned this issue on Feb 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      EntryPointNotFoundException when instantiating a TaskDialog · Issue #23 · ookii-dialogs/ookii-dialogs-wpf