Ookii-dialogs-wpf: ВрСбуСтся ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия .Net Core 3.0

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 26 июл. 2019  Β·  10ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ookii-dialogs/ookii-dialogs-wpf

ВрСбуСтся ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия .Net Core 3.0

enhancement help wanted

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

НСбольшой ΡƒΠ΄Π°Ρ€, ΠΌΡ‹ пСрСносим наши ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ WPF Π½Π° .NET Core, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ пСрСнСсти Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ookii ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС.

ВсС 10 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Бпасибо @stricq.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° .NET Core 3.0 - ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ†Π΅Π»ΡŒ. Π― ΠΌΠΎΠ³ Π±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ этим послС Π²Ρ‹Ρ…ΠΎΠ΄Π° RTM, поэтому, Ссли Π²Π°ΠΌ Π²Π°ΠΆΠ½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия, я Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ PR.

Каково Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС этого вопроса?

НСбольшой ΡƒΠ΄Π°Ρ€, ΠΌΡ‹ пСрСносим наши ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ WPF Π½Π° .NET Core, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ пСрСнСсти Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ookii ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС.

Π― установил ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Core 3.1 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ компилятора ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ Π±Ρ‹Π» восстановлСн с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсий Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π΄ΠΎ 4.8, Π° Π½Π΅ Core 3.1, ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстим с ΠΌΠΎΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.
Однако, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΎΠ½ компилируСтся ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования:

     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 Π±ΡƒΠ΄Π΅Ρ‚ вставлСн Π² Ρ„Π°ΠΉΠ»Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Core 3.1?
Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойство RootFolder Π² VistaFolderBrowserDialog.

ИспользованиС сборки .NET Framework Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ .NET Core ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° послСдствия:

  1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Windows. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ WPF, Π° Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ API, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Windows, это Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ бСспокойства;
  2. Если сборка .NET Framework ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ API, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² .NET Core, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя использовали эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ .NET Core, ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½Π΅ происходило, я Π΄ΡƒΠΌΠ°ΡŽ, это Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ссли Π²Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ² прСдупрСТдСния компилятора, использованиС этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ .NET Core каТСтся довольно бСзопасным. Π― всС Π΅Ρ‰Π΅ надСюсь, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ смоТСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ .NET Core.

TaskDialog Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² .NET Core 3.1. Но VistaFolderBrowserDialog ΠΈ ProgressDialog Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· TaskDialog.ShowDialog() .

System.EntryPointNotFoundException
НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«TaskDialogIndirectΒ» Π² DLL Β«comctl32.dllΒ».

Π― Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» β„–7, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма - Windows 10 1909.

Π’ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ WPF (.NET Core) Π² Visual Studio 2019.
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ Π² .ctor MainWindow .
    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.Wpf 2.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

NB: прилоТСния WPF Π² .NET Core 3.1 Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ манифСст прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Ookii. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ автоматичСски Π² прилоТСния .NET Framework, Π½ΠΎ с .NET Core 3.1 это ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ, поэтому Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСбольшой Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ шаг. Π‘ΠΎΠ»Π΅Π΅ подробная информация ΠΎ README этого Ρ€Π΅ΠΏΠΎ.


Π•Ρ‰Π΅ Ρ€Π°Π· спасибо
/ cc @stricq @cheesi @lklauder @hillin @ haruby511 @vpenades @Agagamand @ NateTheGreat714 @andreasgrosche

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ