Ookii-dialogs-wpf: Benötigen Sie die Vorabversion von .Net Core 3.0

Erstellt am 26. Juli 2019  ·  10Kommentare  ·  Quelle: ookii-dialogs/ookii-dialogs-wpf

Benötigen Sie die Vorabversion von .Net Core 3.0

enhancement help wanted

Hilfreichster Kommentar

Eine leichte Beule, wir migrieren unsere WPF-Projekte zu .NET Core. Es wäre großartig, wenn wir die Ookii-Bibliotheken so schnell wie möglich migrieren könnten.

Alle 10 Kommentare

Danke @stricq.

Die Unterstützung von .NET Core 3.0 ist definitiv ein Ziel. Ich könnte jedoch anfangen, daran zu arbeiten, nachdem RTM ausgeliefert wurde. Wenn Sie sich also für die Vorabversion interessieren, würde ich mich über eine PR freuen

Wie ist der aktuelle Stand zu diesem Thema?

Eine leichte Beule, wir migrieren unsere WPF-Projekte zu .NET Core. Es wäre großartig, wenn wir die Ookii-Bibliotheken so schnell wie möglich migrieren könnten.

Ich habe die vorhandene Framework-Version in einem Core 3.1-Projekt installiert und habe eine Compiler-Warnung erhalten, dass das Paket mit verschiedenen Framework-Versionen bis 4.8 anstelle von Core 3.1 wiederhergestellt wurde und möglicherweise nicht vollständig mit meinem Projekt kompatibel ist.
Es scheint jedoch für die folgende Verwendung zu kompilieren und in Ordnung zu sein:

     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( );

Was passiert, wenn der Ookii-Code in die Dateien eines neuen Core 3.1-Projekts eingefügt wird?
Es wäre schön, wenn die RootFolder-Eigenschaft in VistaFolderBrowserDialog implementiert würde.

Die Verwendung der .NET Framework-Assembly in einem .NET Core-Projekt hat zwei Konsequenzen:

  1. Das Projekt läuft nur unter Windows. Da es sich um ein WPF-Projekt handelt und die zugrunde liegende API, die diese Bibliothek verwendet, nur unter Windows verfügbar ist, ist dies kein Problem.
  2. Wenn die .NET Framework-Assembly eine API verwendet, die in .NET Core nicht vorhanden ist, wird eine Laufzeitausnahme ausgelöst. Da wir diese Bibliothek bereits seit einiger Zeit in unserem .NET Core-Projekt verwenden und keine dieser Ausnahmen aufgetreten ist, ist dies vermutlich auch kein Problem.

Wenn Sie also die Compiler-Warnung ertragen können, scheint es im Allgemeinen ziemlich sicher zu sein, diese Bibliothek in einem .NET Core-Projekt zu verwenden. Ich hoffe trotzdem, dass wir die .NET Core-Version bekommen können.

Das TaskDialog funktioniert in .NET Core 3.1 nicht. Aber VistaFolderBrowserDialog und ProgressDialog haben kein Problem.

Die folgende Ausnahme wird von TaskDialog.ShowDialog() ausgelöst.

System.EntryPointNotFoundException
In der DLL 'comctl32.dll' konnte kein Einstiegspunkt mit dem Namen 'TaskDialogIndirect' gefunden werden.

Ich habe auch # 7 versucht, aber das gleiche Ergebnis.

Das Betriebssystem ist Windows 10 1909.

Reproduzieren

  1. Erstellen Sie ein WPF- Projekt
  2. Fügen Sie den folgenden Code zu .ctor von 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. Erstellen und ausführen.

@ haruby511 Ich hatte auch dieses Problem. Es muss jedoch nur ein wenig bearbeitet werden, damit die Bibliothek auf TaskDialog zugreifen kann.

  1. Fügen Sie ein app.manifest hinzu.
  2. Öffnen Sie die Manifestdatei. Sie werden dieses Bit sehen:
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>

Kommentieren Sie dies aus.

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf Eigenschaften.
  2. Wählen Sie auf der Registerkarte "Anwendung" die Manifestdatei aus der Liste aus.

Das sollte das Problem beheben.

GitHub hat dieses Problem mit der Zusammenführung von PR # 7 automatisch geschlossen, daher öffne ich es erneut. Ich plane, am kommenden Wochenende ein Pre-Release-Paket zu veröffentlichen.

Ookii.Dialogs.Wpf 2.0.0-Preview1 wurde auf nuget.org veröffentlicht

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

Bitte testen Sie in Ihren Apps und melden Sie alle Probleme, die Sie finden.


Vielen Dank an @ acemod13 für die ganze Arbeit!

Eine stabile Version mit Unterstützung für .NET 3.1 wurde auf nuget.org veröffentlicht: Ookii.Dialogs.Wpf 2.0.0

Install-Package Ookii.Dialogs.Wpf -Version 2.0.0

Hinweis: WPF-Apps unter .NET Core 3.1 müssen ein Anwendungsmanifest deklarieren, um Ookii-Dialoge verwenden zu können. Das Manifest wurde automatisch in .NET Framework-Apps hinzugefügt, aber mit .NET Core 3.1 ist dies nicht mehr der Fall, sodass der Entwickler einen kleinen zusätzlichen Schritt ausführen muss. Weitere Details zur README dieses Repos.


Nochmals vielen Dank an
/ cc @stricq @cheesi @lklauder @hillin @ haruby511 @vpenades @Agagamand @ NateTheGreat714 @andreasgrosche

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen