Ookii-dialogs-wpf: ComCtlv6ActivationContext 中的 System.ArgumentNullException

创建于 2020-12-01  ·  4评论  ·  资料来源: ookii-dialogs/ookii-dialogs-wpf

作为独立的 .NET 5 单文件包运行时,我遇到以下错误:

System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
at System.IO.Path.Combine(String path1, String path2)
at Ookii.Dialogs.Wpf.ComCtlv6ActivationContext.EnsureActivateContextCreated()
at Ookii.Dialogs.Wpf.ComCtlv6ActivationContext..ctor(Boolean enable)
at Ookii.Dialogs.Wpf.TaskDialog.ShowDialog(IntPtr owner)
at Ookii.Dialogs.Wpf.TaskDialog.ShowDialog(Window owner)

负责的代码如下所示:

var dialog = new VistaFolderBrowserDialog();
dialog.ShowDialog(Application.Current.MainWindow);

看起来 ComCtlv6ActivationContext.EnsureActivateContextCreated 方法不希望assemblyLoc为空字符串,当作为独立的单文件包运行时,它可能是空字符串(请参阅Assembly.Location 文档的备注):
https://github.com/augustoproiete/ookii-dialogs-wpf/blob/2a64fea6c5c3d32f468814d205a337ce78afedab/src/Ookii.Dialogs.Wpf/ComCtlv6ActivationContext.cs#L70 -L79

Path.GetDirectoryName方法在传递空字符串时返回 null(即使它的文档建议使用 ArgumentException)。

我想这将不再是问题 #31 实施后的问题,但认为值得一提,因为似乎没有简单的解决方法。

所有4条评论

感谢您报告此@mgpreston!

你是对的:当 #31 被实现时,这不会成为问题,但独立的 .NET 5 单文件应用程序正在破坏这一事实提高了实现它的优先级。

今晚我会发布一个版本来解决这个问题。

@mgpreston我刚刚在 nuget.org 上发布了

@augustoproiete感谢您这么快解决这个问题。 我很高兴地报告它现在运行良好!

@mgpreston不客气! 感谢您确认它有效!

此页面是否有帮助?
0 / 5 - 0 等级