Ookii-dialogs-wpf: ComCtlv6ActivationContextのSystem.ArgumentNullException

作成日 2020年12月01日  ·  4コメント  ·  ソース: ookii-dialogs/ookii-dialogs-wpf

自己完結型の.NET5単一ファイルバンドルとして実行すると、次のエラーが発生します。

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が実装されれば、これはもはや問題にならないだろうと思いますが、簡単な回避策はないように思われるので、言及する価値があると思いました。

bug

全てのコメント4件

この@mgprestonを報告してくれてありがとう!

正解です。#31が実装されている場合、これは問題にはなりませんが、自己完結型の.NET 5単一ファイルアプリが壊れているという事実により、実装の優先順位が高くなります。

この問題を修正するリリースを今夜リリースします。

@mgprestonこれを修正するOokii.Dialogs.Wpfv3.1.0をnuget.orgで公開しました

@augustoproieteこれをとても早く修正してくれてありがとう。 現在、完全に機能していることを報告できてうれしいです。

@mgprestonどういたしまして! 動作することを確認していただきありがとうございます。

このページは役に立ちましたか?
0 / 5 - 0 評価