Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: WPF – Mehr Performance zur Laufzeit mit dem WPF ResMerger
Keine Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: Mehr Performance zur Laufzeit mit dem WPF ResMerger“.

Eine sauber strukturierte WPF-Anwendung ist aus Architektursicht essenziell. Aus technischer Sicht kann sie sich allerdings negativ auf die Geschwindigkeit auswirken. Ein Beispiel dafür ist die Trennung von Styles, DataTemplates und weiteren Resource-Instanzen via ResourceDictionaries. Das Nachladen jeder ResourceDictionary-Instanz beansprucht unnötige Energie vom System. Eine attraktive Lösung für dieses Problem bietet das kostenlose Open-Source-Tool WPF ResMerger.

WPF: Mehr Performance zur Laufzeit mit dem WPF ResMerger

Das Tool wird innerhalb des Build-Prozesses angestoßen und fügt die unterschiedlichen ResourceDictionaries zu einem ResourceDictionary zusammen, das dann innerhalb der App.xaml global bereitgestellt wird. So kann während der Entwicklung sauber strukturiert werden, während zur Laufzeit der optimierte Code ausgeführt wird. Der WPF ResMerger wird über Git von der GitHub-Projektseite bezogen:

 git clone https://github.com/dctdct/WPF-ResMerger.git

Dann muss das Projekt mit Visual Studio geöffnet und gestartet werden. Anschließend kann man in seinem persönlichen WPF-Projekt einen Unterordner mit dem Namen Tools anlegen und die erzeugte ResMerger.exe hineinkopieren. Das neue Verzeichnis muss nicht in die Visual-Studio-Solution-Datei aufgenommen werden. Zum Schluss wird bei den Projekteigenschaften ein Pre-Build Command hinterlegt mit:

"$(SolutionDir)Tools\ResMerger\ResMerger.exe" "$(ProjectDir)" $(ProjectName) "/Source.xaml" "/Output.xaml"

Die Source.xaml-Datei ist die bereits vorhandene ResourceDictionary-Datei, die alle zusammengefügten ResourceDictionaries beinhaltet (merged resource dictionary). Die Output.xaml-Datei ist das komplett generierte ResourceDictionary von allen in Source.xaml festgelegten Dateien.

Damit jetzt die erzeugte Output.xaml-Datei beim Projekt berücksichtigt wird, muss sie bei der Visual-Studio-Solution-Datei hinterlegt werden. Dazu einfach die SLN-Projektdatei mit dem Editor bearbeiten und den Code aus Listing 1 einbinden. Das war es auch schon. Jetzt wird bei jedem Build-Vorgang die ideale ResourceDictionary-Datei erzeugt und eingebunden.

 

<Page Include="Source.xaml">

<Generator>MSBuild:Compile</Generator>

<SubType>Designer</SubType>

</Page>

<Page Include="Output.xaml">

<DependentUpon>Source.xaml</DependentUpon>

<Generator>MSBuild:Compile</Generator>

<SubType>Designer</SubType>

</Page>


Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

BASTA! Spring 2020

Dr. Holger Schwichtenberg

Von .NET Framework zu .NET Core migrieren oder nicht migrieren, das ist hier (nicht die einzige) Frage!

mit Dr. Holger Schwichtenberg (www.IT-Visions.de/5Minds IT-Solutions)

Rainer Stropek

C#-8- und .NET-Core-3-Workshop

mit Rainer Stropek (software architects/www.IT-Visions.de)

Adrienne Tacke

Azure Automation: The Good Parts

mit Adrienne Tacke (Adrienne Tacke)

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -