Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ .Net Core 3.0
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @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 ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ:
Π ΠΎΠ±ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΡΠΎΡΠΈΠ² ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ .NET Core ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ. Π― Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ .NET Core.
TaskDialog
Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² .NET Core 3.1. ΠΠΎ VistaFolderBrowserDialog
ΠΈ ProgressDialog
Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ±ΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· TaskDialog.ShowDialog()
.
System.EntryPointNotFoundException
ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«TaskDialogIndirectΒ» Π² DLL Β«comctl32.dllΒ».
Π― ΡΠΎΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» β7, Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡ ΠΆΠ΅.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° - Windows 10 1909.
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();
@ haruby511 Π£ ΠΌΠ΅Π½Ρ ΡΠΎΠΆΠ΅ Π±ΡΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π»ΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΡΡΠΎΠ±Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ TaskDialog
.
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
Π Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΡΠΎ.
ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
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
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΄Π°Ρ, ΠΌΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ Π½Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ WPF Π½Π° .NET Core, Π±ΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ookii ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΠ΅Π΅.