WPF avec .NET Core et .NET Framework

Je cherche à créer un projet WPF (Windows Presentation Foundation) et Visual Studio Community 2019. Que puis-je instancier comme applications WPF sur quel type de .NET Framework ?

Avec Visual Studio Community 2019 le choix des templates d'applications à bien changé (dans la forme ) :

Visual Studio - Template d'applications

Je peux créer une application WPF soit avec .NET Framework soit avec .NET Core. Mais je peux également créer une Application de Navigateur avec .NET Framework :

Visual Studio - Template d'application de Navigateur

Cela me fait penser aux vieilles applications XBAP en WPF pour le navigateur qui ne fonctionnaient que sur Internet Explorer, IE comme on l'appelait à l'époque.

Je vous laisse de côté le Visual Basic, ce serait bien stupide de vouloir développer aujourd'hui en Visual Basic. Sacré Bilou, il aura fallut qu'il continue de nous gonfler avec son foutu langage Visual Basic qui lui survivra ...

Si j'instancie une Application de Navigateur WPF et que je clique sur "run" :

Visual Studio - Application de Navigateur XBAP

Il s'agit bien d'un fichier XBAP qui essaye de se télécharger dans mon navigateur. Mais j'essaye d'éxécuter mon application, je trouve ce commentaire :

As far as I know, the browsers Edge doesn't support it. The XBAPs are intended to be used in intranet scenarios where all users use Internet Explorer. And many settings (such as security) are associated with IE. So, when you run it by other browser, it may have some issues.

Alors laissons cela de côté pour reprendre les Applications WPF pour le poste.

D'une part, j'ai une application WpfAppCore1 avec .NET Core :

WPF application with .NET Core
WPF Application with .NET Core

Et de l'autre, j'ai la même application mais avec comme Référence .NET framework :

WPF application with .NET Framework

Quelles autres différences entre WPF .NET Framework et WPF .NET Core :

Il y a un fichier App.config dans .NET Framework, pas dans .NET Core

Dans les csproj de .NET Core :

<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>
true</UseWPF>

Et dans celui de .NET Framework :

<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>

Comparaison des deux instanciation d'application WPF :

Compare WPF .NET Framework vs WPF .NET Core
Différences entre WPF .NET Core et WPF .NET Framework

Ce que Microsoft nous prédit, c'est l'abandon de .NET Framework au profit de .NET Core ou .NET x.x. .NET Core est multiplateforme et open source disponible sur GitHub :

dotnet/wpf

Mais il y a pourtant encore des technologies disponibles avec .NET Framework qui ne le sont pas avec .NET Core :

  • La communication à distance identifiée comme une architecture problématique
  • Le sandboxing
  • Workflow Foundation
  • L'enregistrement des assemblys générés par réflexion
  • Les blocs de scripts XSLT

.NET Core est porté sur plusieurs plateformes .NET Framework n'est que sur Windows.

Si vous souhaitez effectuer une migration de .NET Framework vers .NET Core :

Microsoft - Migration d’applications WPF vers .NET Core

Tous ceux qui pensent encore que ce n'est pas possible de faire du WPF sur .NET Core vont devoir mettre à jour leur copie et moi le premier (mais c'était il y a longtemps). En effet .NET Core c'était ASP.NET Core (Web only).

Aujourd'hui .NET Core devient .NET 5.0 ... 6.0 .... etc

Pour tenter de comprendre les différentes version des frameworks de Microsoft vous pouvez regarder ici :

Blog .NET - Comprendre .NET Standard en 5 min

Alors en 5 minutes certainement pas, il faut bien plus de temps pour arriver en bas de cette page et franchement je n'ai pas tout compris.

Je viens d'instancier une Application WPF avec la dernière mise à jour de Visual Studio Community 2019 et dans le fichier .cproj je trouve :

<TargetFramework>net5.0-windows</TargetFramework>

Voilà, on vient de voir les trois types d'application WPF que l'on peut instancier avec Visual Studio Community 2019 et les différences qu'il y a entre .NET Framework et .NET Core.