Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan frissíthet asztali Windows Presentation Foundation (WPF) alkalmazásokat .NET 8-ra. Annak ellenére, hogy a WPF .NET-en, platformfüggetlen technológián fut, a WPF továbbra is csak Windows-keretrendszer. A .NET frissítési segédjével az alábbi WPF-projekttípusok frissíthetők:
- WPF-projekt
- Vezérlőkönyvtár
- .NET-kódtár
Ha .NET-keretrendszerről .NET-re frissít, tekintse át a WPF .NET-keretrendszerrel kapcsolatos eltéréseket és a .NET-keretrendszerből a .NET-keretrendszerbe történő portolást ismertető cikket.
Előfeltételek
- Windows operációs rendszer
- A Visual Studio 2022 17.7-es vagy újabb verziója a .NET 8 célzásához
- A Visual Studio 2022 17.1-es vagy újabb verziója a .NET 7 célzásához
- .NET Upgrade Assistant bővítmény a Visual Studióhoz
Bemutató alkalmazás
Ez a cikk a Webes kedvencek mintaprojekt frissítésének kontextusában készült, amelyet a .NET-minták GitHub-adattárából tölthet le.
A frissítés kezdeményezése
Ha több projektet frissít, kezdje olyan projektekkel, amelyek nem rendelkeznek függőségekkel. A Webes kedvencek mintában a WebSiteRatings projekt a StarVoteControl kódtártól függ, ezért először frissíteni kell a StarVoteControlt .
Jótanács
Mindenképpen készítsen biztonsági másolatot a kódról, például a forrásvezérlőben vagy egy másolatban.
Az alábbi lépésekkel frissíthet egy projektet a Visual Studióban:
Kattintson a jobb gombbal a StarVoteControl projektre a Megoldáskezelő ablakban, és válassza a Frissítés lehetőséget:
Ekkor megnyílik egy új lap, amely arra kéri, hogy válassza ki a frissítés végrehajtásának módját.
Válassza a Helyszíni projektfrissítéslehetőséget.
Ezután válassza ki a cél keretrendszert. A frissíteni kívánt projekt típusától függően különböző lehetőségek jelennek meg. A .NET Standard 2.0 jó választás, ha a kódtár nem támaszkodik asztali technológiára, például a WPF-re, és a .NET-keretrendszer projektjei és a .NET-projektek is használhatják. A legújabb .NET-kiadások azonban számos nyelvi és fordítói fejlesztést biztosítanak a .NET Standardhoz hasonlóan.
Válassza a .NET 8.0 , majd a Tovább lehetőséget.
Megjelenik egy fa a projekthez kapcsolódó összes összetevővel, például kódfájlokkal és kódtárakkal. Az egyes összetevőket vagy a teljes projektet frissítheti, ami az alapértelmezett. Válassza: Frissítés kiválasztása a frissítés elindításához.
Ha a frissítés befejeződött, az eredmények megjelennek:
A teljes zöld körrel rendelkező tárgyak frissültek, míg az üres zöld körrel rendelkező tárgyak kimaradtak. Az átugrott elemek azt jelentik, hogy a frissítési segéd nem talált frissítendő dolgokat.
Most, hogy az alkalmazás támogató könyvtára frissült, frissítse a fő alkalmazást.
Az alkalmazás frissítése
Az összes támogató kódtár frissítése után a fő alkalmazásprojekt frissíthető. Hajtsa végre a következő lépéseket:
- Kattintson a jobb gombbal a WebSiteRatings projektre a Megoldáskezelő ablakban, és válassza a Frissítés lehetőséget:
- Válassza a Helyszíni projektfrissítés lehetőséget frissítési módként.
- Válassza a .NET 8.0-t a cél-keretrendszerhez, és válassza a Tovább lehetőséget.
- Hagyja kijelölve az összes artefaktumot, és válassza a Frissítés kijelöléslehetőséget.
A frissítés befejezése után megjelennek az eredmények. Ha egy elem figyelmeztető szimbólummal rendelkezik, az azt jelenti, hogy van egy jegyzet, amelyet olvashat, ha kibontja az elemet.
Tiszta build létrehozása
A projekt frissítése után tisztítsa meg és kompilálja.
- Kattintson a jobb gombbal a WebSiteRatings projektre a Megoldáskezelő ablakban, és válassza a Tiszta lehetőséget.
- Kattintson a jobb gombbal a WebSiteRatings projektre a Megoldáskezelő ablakban, és válassza a Build lehetőséget.
Ha az alkalmazás hibát észlelt, az Hibalista ablakban találhatja meg őket, ahol a javításukra vonatkozó javaslat is elérhető.
A frissítést követő lépések
Ha a projektet .NET-keretrendszerről .NET-re frissítik, a .NET-keretrendszerről a .NET-keretrendszerről a .NET-keretrendszerre való frissítés után tekintse át a Modernizálás című cikkben található információkat.
A frissítés után a következőt kell elvégeznie:
Ellenőrizze NuGet-csomagjait.
A .NET frissítési segéd frissített néhány csomagot új verziókra. A cikkben szereplő mintaalkalmazással a
Microsoft.Data.Sqlite
NuGet-csomag 1.0.0-ról8.0.x-re frissült. Az 1.0.0 azonban a NuGet-csomagtól függ, de aSQLite
8.0.x eltávolítja ezt a függőséget. ASQLite
NuGet-csomagra továbbra is hivatkozik a projekt, bár már nincs rá szükség. Mind aSQLite
SQLite.Native
NuGet-csomagok eltávolíthatók a projektből.Távolítsa el a régi NuGet-csomagokat.
A packages.config fájl már nem szükséges, és törölhető a projektből, mivel a NuGet-csomag hivatkozásai most már deklarálva vannak a projektfájlban. Emellett a helyi NuGet-csomaggyorsítótár-mappa , a Csomagok nevű mappa a projekt mappájában vagy szülőmappájában található. Ez a helyi gyorsítótármappa törölhető. Az új NuGet-csomaghivatkozások egy globális gyorsítótármappát használnak a csomagokhoz, amely a felhasználó profilkönyvtárában érhető el .nuget\packages néven.
Távolítsa el a
System.Configuration
könyvtárat.A legtöbb .NET-keretrendszer-alkalmazás hivatkozik a kódtárra
System.Configuration
. A frissítés után lehetséges, hogy a kódtárra továbbra is közvetlenül hivatkozik a rendszer.A
System.Configuration
kódtár a app.config fájl használatával biztosít futásidejű konfigurációs beállításokat az alkalmazás számára. A .NET esetében ezt a kódtárat aSystem.Configuration.ConfigurationManager
NuGet-csomag váltotta fel. Távolítsa el a kódtárra mutató hivatkozást, és adja hozzá a NuGet-csomagot a projekthez.Ellenőrizze, hogy hol lehet modernizálni az alkalmazást.
Az API-k és a kódtárak meglehetősen megváltoztak a .NET megjelenése óta. A legtöbb esetben a .NET-keretrendszer nem rendelkezik hozzáféréssel ezekhez a fejlesztésekhez. A .NET-re való frissítéssel mostantól modernebb kódtárakhoz is hozzáférhet.
A következő szakaszok a jelen cikk által használt mintaalkalmazás modernizálásának területeit ismertetik.
Modernizálás: Webböngésző-vezérlő
A WebBrowser WPF mintaalkalmazás által hivatkozott vezérlő az Internet Exploreren alapul, amely elavult. A .NET-hez készült WPF a Microsoft Edge-en alapuló WebView2 vezérlőt használhatja. Az új WebView2 webböngésző-vezérlőre való frissítéshez hajtsa végre az alábbi lépéseket:
Adja hozzá a
Microsoft.Web.WebView2
NuGet-csomagot.A MainWindow.xaml fájlban:
Importálja a vezérlőt a wpfControls névtérbe a gyökérelemben:
<mah:MetroWindow x:Class="WebSiteRatings.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" xmlns:local="clr-namespace:WebSiteRatings" xmlns:vm="clr-namespace:WebSiteRatings.ViewModels" xmlns:VoteControl="clr-namespace:StarVoteControl;assembly=StarVoteControl" xmlns:wpfControls="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf" Loaded="MetroWindow_Loaded" mc:Ignorable="d" Title="My Sites" Height="650" Width="1000">
Azon a helyen, ahol a
<Border>
elemet deklarálják, távolítsa el aWebBrowser
vezérlőt, és cserélje le awpfControls:WebView2
vezérlőre.<Border Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" BorderThickness="1" BorderBrush="Black" Margin="5"> <wpfControls:WebView2 x:Name="browser" ScrollViewer.CanContentScroll="True" /> </Border>
Szerkessze a MainWindow.xaml.cs háttérkód fájlt. Frissítse a metódust
ListBox_SelectionChanged
, hogy abrowser.Source
tulajdonságot érvényes Uriértékre állítsa. Ez a kód korábban egy sztring formájában adta át a weboldal URL-címét, de a WebView2 vezérlőhöz egyUri
szükséges.private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var siteCollection = (ViewModels.SiteCollection)DataContext; if (siteCollection.SelectedSite != null) browser.Source = new Uri(siteCollection.SelectedSite.Url); else browser.NavigateToString("<body></body>"); }
Attól függően, hogy a Windows melyik verzióját futtatja az alkalmazás felhasználója, előfordulhat, hogy telepítenie kell a WebView2 futtatókörnyezetet. További információ: A WebView2 használatának első lépései a WPF-alkalmazásokban.
Modernizálj: appsettings.json
A .NET-keretrendszer a App.config fájllal tölti be az alkalmazás beállításait, például a kapcsolati sztringeket és a naplózási szolgáltatókat. A .NET mostantól a appsettings.json fájlt használja az alkalmazásbeállításokhoz.
App.config fájlok a NuGet-csomagon keresztül támogatottak a System.Configuration.ConfigurationManager
.NET-ben, a appsettings.json támogatását pedig a Microsoft.Extensions.Configuration
NuGet-csomag biztosítja.
Ahogy más kódtárak frissülnek .NET-re, modernizálnak azáltal, hogy appsettings.json-t támogatnak ahelyett, hogy App.config-t használnának. Például a .NET Frameworkben a .NET 6+-ra frissített naplózási szolgáltatók már nem használják a App.config-t a beállításokhoz. Jó követni az irányukat, és távolodni a App.config használatától, ahol csak lehet.
appsettings.json használata a WPF-mintaalkalmazással
A WPF mintaalkalmazás frissítése után például használja a appsettings.json a kapcsolati sztringet a helyi adatbázishoz.
Távolítsa el a
System.Configuration.ConfigurationManager
NuGet-csomagot.Adja hozzá a
Microsoft.Extensions.Configuration.Json
NuGet-csomagot.Adjon hozzá egy fájlt a appsettings.jsonnevű projekthez.
Állítsa be a appsettings.json fájlt a kimeneti könyvtárba való másoláshoz.
Állítsa be a másolást kimeneti beállításra a Visual Studióban a Tulajdonságok ablak használatával, miután kiválasztotta a fájlt a Megoldáskezelőben. Másik lehetőségként közvetlenül szerkesztheti a projektet, és hozzáadhatja a következőket
ItemGroup
:<ItemGroup> <Content Include="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
Migrálja a App.config fájl beállításait egy új appsettings.json fájlba.
A WPF mintaalkalmazásbanapp.config csak egyetlen kapcsolati sztringet tartalmazott. Szerkessze a appsettings.json fájlt a kapcsolat string definiálásához.
{ "ConnectionStrings": { "database": "DataSource=sqlite.db;" } }
Szerkessze az App.xaml.cs fájlt, és példányosítson egy konfigurációs objektumot, amely betölti a appsettings.json fájlt. A hozzáadott sorok ki vannak emelve:
using System.Windows; using Microsoft.Extensions.Configuration; namespace WebSiteRatings { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { public static IConfiguration Config { get; private set; } public App() { Config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); } } }
A .\Models\Database.cs fájlban módosítsa a metódust
OpenConnection
az újApp.Config
tulajdonság használatára. Ehhez importálnia kell a névteretMicrosoft.Extensions.Configuration
:using Microsoft.Data.Sqlite; using System.Collections.Generic; using Microsoft.Extensions.Configuration; namespace WebSiteRatings.Models { internal class Database { public static SqliteConnection OpenConnection() => new SqliteConnection(App.Config.GetConnectionString("database")); public static IEnumerable<Site> ReadSites()
GetConnectionString
egy kiterjesztési metódus, amelyet aMicrosoft.Extensions.Configuration
névtér biztosít.
.NET Desktop feedback