Ookii-dialogs-wpf: .Net Core3.0プレリリースバージョンが必要

作成日 2019年07月26日  ·  10コメント  ·  ソース: ookii-dialogs/ookii-dialogs-wpf

.Net Core3.0プレリリースバージョンが必要

enhancement help wanted

最も参考になるコメント

ちょっとした問題ですが、WPFプロジェクトを.NETCoreに移行しています。Ookiiライブラリをできるだけ早く移行できれば素晴らしいと思います。

全てのコメント10件

@stricqに感謝します。

.NET Core3.0のサポートは間違いなく目標です。 ただし、RTMの出荷後に作業を開始する可能性があるため、プレリリースバージョンが気になる場合は、PRを取得できれば幸いです。

この問題の現状はどうなっていますか?

ちょっとした問題ですが、WPFプロジェクトを.NETCoreに移行しています。Ookiiライブラリをできるだけ早く移行できれば素晴らしいと思います。

既存のフレームワークバージョンをCore3.1プロジェクトにインストールしましたが、Core 3.1ではなく4.8までのさまざまなフレームワークバージョンを使用してパッケージが復元され、プロジェクトと完全に互換性がない可能性があるというコンパイラ警告があります。
ただし、次の使用法ではコンパイルして問題なく動作するようです。

     var dialog = new Ookii.Dialogs.Wpf.VistaFolderBrowserDialog( );
     dialog.Description = "choose folder in which to store scripts for this project";
     dialog.RootFolder = Environment.SpecialFolder.MyComputer;  // not implemented
     dialog.ShowNewFolderButton = true;
     dialog.UseDescriptionForTitle = true;

     bool result = dialog.ShowDialog( this ).GetValueOrDefault( );

Ookiiコードを新しいCore3.1プロジェクトのファイルに貼り付けるとどうなりますか?
VistaFolderBrowserDialogにRootFolderプロパティを実装すると便利です。

.NETCoreプロジェクトで.NETFrameworkアセンブリを使用すると、次の2つの結果が生じます。

  1. プロジェクトはWindowsでのみ実行されます。 これはWPFプロジェクトであり、このライブラリが使用する基盤となるAPIはWindowsでのみ使用できるため、これは問題ではありません。
  2. .NETFrameworkアセンブリが.NETCoreに存在しないAPIを使用している場合、ランタイム例外がスローされます。 .NET Coreプロジェクトでこのライブラリをしばらく使用していて、そのような例外は発生しなかったので、これも問題ではないと思います。

したがって、一般に、コンパイラの警告に耐えられるのであれば、このライブラリを.NETCoreプロジェクトで使用するのはかなり安全だと思われます。 それでも、.NETCoreバージョンを入手できることを願っています。

TaskDialogは.NET Core3.1では機能しません。 しかし、 VistaFolderBrowserDialogProgressDialogは問題ありません。

TaskDialog.ShowDialog()からスローされた以下の例外。

System.EntryPointNotFoundException
DLL「comctl32.dll」で「TaskDialogIndirect」という名前のエントリポイントが見つかりません。

私も#7を試しましたが、同じ結果です。

OSはWindows101909です。

再現

  1. Visual Studio 2019でWPF(.NET Core)プロジェクトを作成します。
  2. 以下のコードをMainWindow .ctorに追加します。
    csharp TaskDialog taskDialog = new TaskDialog() { WindowTitle = "Title", MainIcon = TaskDialogIcon.Information, MainInstruction = "test", Content = "TEST", ExpandedInformation = "detail" }; taskDialog.Buttons.Add(new TaskDialogButton(ButtonType.Ok)); taskDialog.ShowDialog();
  3. ビルドして実行します。

@ haruby511私もこの問題を抱えていました。 ただし、ライブラリがTaskDialogアクセスできるように、プロジェクトで少し編集するだけで済みます。

  1. app.manifestを追加します。
  2. マニフェストファイルを開きます。 このビットが表示されます:
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>

これのコメントを外します。

  1. プロジェクトを右クリックし、[プロパティ]をクリックします。
  2. [アプリケーション]タブで、リストからマニフェストファイルを選択します。

これで問題は解決するはずです。

GitHubはPR#7のマージでこの問題を自動的にクローズしたので、再開します。 プレリリースパッケージを来週末にリリースする予定です。

Ookii.Dialogs.Wpf2.0.0-preview1がnuget.orgで公開されました

Install-Package Ookii.Dialogs.Wpf -Version 2.0.0-preview1

アプリでテストし、見つかった問題を報告してください。


すべての作業を行ってくれた@ acemod13に感謝します!

.NET 3.1をサポートする安定バージョンがnuget.orgに公開されました: Ookii.Dialogs.Wpf 2.0.0

Install-Package Ookii.Dialogs.Wpf -Version 2.0.0

注意:.NET Core 3.1上のWPFアプリは、OokiiDialogsを使用するためにアプリケーションマニフェストを宣言する必要があります。 マニフェストは.NETFrameworkアプリに自動的に追加されましたが、.NET Core 3.1ではこれが当てはまらないため、開発者が行う必要のある追加の手順が少しあります。 このリポジトリのREADMEの詳細。


貢献してくれた@ acemod13にもう一度感謝します!
/ cc @stricq @cheesi @lklauder @hillin @ haruby511 @vpenades @Agagamand @ NateTheGreat714 @andreasgrosche

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