作为独立的 .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 实施后的问题,但认为值得一提,因为似乎没有简单的解决方法。
感谢您报告此@mgpreston!
你是对的:当 #31 被实现时,这不会成为问题,但独立的 .NET 5 单文件应用程序正在破坏这一事实提高了实现它的优先级。
今晚我会发布一个版本来解决这个问题。
@mgpreston我刚刚在 nuget.org 上发布了
@augustoproiete感谢您这么快解决这个问题。 我很高兴地报告它现在运行良好!
@mgpreston不客气! 感谢您确认它有效!