Wie verweise ich auf System.Windows.Forms in .NET Core 3.0 für WPF-Apps?

12

Ich migriere meine WPF-Desktop-App von .NET Framwork auf Core 3.0. Ich habe System.Windows.Forms.FolderBrowserDialog () verwendet und bin jetzt nicht sicher, wie ich diesen Verweis zum Core-Projekt hinzufügen soll. Es ist kein NuGet-Paket "System.Windows.Forms" verfügbar. Gibt es eine alternative Möglichkeit, den FolderBrowserDialog im Core anzuzeigen?

Aktualisieren

Ich habe das Core-Projekt mit der Standardvorlage erstellt und dann eingefügte CS- und XAML-Dateien darin kopiert. Die .csproj-Datei sieht folgendermaßen aus:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>
Yaugenka
quelle
Die Dokumentation besagt, dass die Klasse vorhanden ist: docs.microsoft.com/pl-pl/dotnet/api/… - Bitte fügen Sie die csproj-Datei ein - möglicherweise ist TargetFramework falsch.
Hostel
Bitte überprüfen Sie die aktualisierte Frage. Ich habe die Seite auch gesehen, aber der Compiler gibt den Fehler The type or namespace name 'Forms' does not exist in the namespace 'System.Windows'und keine Referenzimportvorschläge aus.
Yaugenka

Antworten:

17

Sie müssen csproj zusätzlichen Schalter hinzufügen:

<UseWindowsForms>true</UseWindowsForms>

Fügen Sie es unter UseWpf hinzu . Versuchen Sie dann neu zu erstellen. Danach sollten Sie den Forms-Namespace verwenden können.

Herberge
quelle
Es klappt! Vielen Dank. Beeinflusst die Anwesenheit beider Schalter die Leistung überhaupt? Es ist nur der FolderBrowserDialog, den ich aus den Formularen benötige.
Yaugenka
Vielen Dank! War auf der Suche nach einer Lösung für dieses Problem. Es wirkt wie ein Zauber!
Ratish
1

Es sieht so aus, als ob es bereits existiert: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.folderbrowserdialog?view=netcore-3.0

Für andere Portierungsprobleme möchten Sie möglicherweise das Windows-Kompatibilitätspaket verwenden, mit dem Apps auf .NET Core portiert werden können

Möglicherweise gibt es auch weitere Informationen zu WPF und diesem Problem, da es das schon eine Weile gibt. Dies kann hilfreich sein. Ordnerdialog WPF auswählen und für .NET Core aktualisiert.

Viel Glück bei Ihrem Upgrade!

n234
quelle