Exécution sous .NET 8
Introduction
Depuis la v23.0 et jusqu'à la version v23.11 (inclue), une partie de la solution Avanteam Process Suite s’appuie sur la version moderne de .Net de Microsoft : .Net 6.0. Or .Net 6.0 arrive en fin de vie de support par Microsoft le 12/10/2024. Passé cette date, pour qu’un serveur puisse continuer de fonctionner sur une version qui reçoit des patchs de sécurité il est recommandé de basculer sur la version .Net 8.0 du Framework. Mais ceci demande de configurer le serveur afin de le forcer à utiliser la nouvelle version du runtime, même pour les applications ciblant la version antérieure. C’est ce que l’on va aborder dans ce document.
Les versions de notre solution Avanteam Process Suite supérieures à la version v23.12 (inclue) sont compilées sous la version .Net 8.0 et ne nécessiteront pas cette manipulation.
Il faut savoir qu’il y a une scission forte dans les versions de .Net entre les versions 1.0 à 4.8, qui sont des versions pensées pour tourner sur Windows uniquement, et les versions .Net 5.0 et supérieures, qu’on a appelé un temps « .Net Core » et qui sont nativement pensées pour être multiplateformes (Windows, Linux, etc.)
Ce que l’on va voir dans ce document concerne uniquement l’exécution de code s’appuyant sur la branche moderne de .Net, c’est-à-dire .Net 5.0 ou supérieur.
Installation de .Net 8.0
- Se rendre à l’URL https://dotnet.microsoft.com/en-us/download/dotnet/8.0.
- Cliquer sur le lien de téléchargement de « Hosting Bundle » pour Windows de la dernière version de
ASP.NET Core Runtime 8.x.x. - Puis, une fois téléchargé, exécuter le programme d’installation.
Pour rappel, le package « Hosting Bundle » est celui qui embarque le module nécessaire pour l’interopérabilité avec IIS.
Configuration de .Net recommandée pour utiliser la dernière version
Pour que .Net utilise toujours la dernière version de ses runtimes installés, il faut positionner la variable d’environnement DOTNET_ROLL_FORWARD à LatestMajor.
Ceci peut être fait à plusieurs niveaux, mais ce que l’on conseille sur un serveur, c’est de le faire à deux niveaux. Et c’est ce qu’on va voir ici :
- Au niveau machine, afin que tous les exécutables
.Net 6.0de la solution Avanteam soient bien lancés sur le runtime.Net 8.0. Ceci requiert un redémarrage de Windows. - Au niveau de IIS, pour que les pools (qui n’héritent pas des variables système) lancent bien la partie « root » du site web avec le runtime
.Net 8.0. Ceci requiert un redémarrage des pools IIS.
La suite de la documentation va expliquer comment faire cela graphiquement, puis en lignes de commandes.
Configuration machine
Cliquer sur le barre de recherche Windows de votre serveur et rechercher «* env* ». Ceci devrait suffire à trouver le panneau "Modifier les variables d’environnement système".


Une fois ouvert, cliquer sur le bouton "Variables d’environnement..." en bas, afin d’ajouter une nouvelle variables système (partie basse) :
| Variable | Valeur |
|---|---|
DOTNET_ROLL_FORWARD | LatestMajor |

Configuration IIS
-
Ouvrir le gestionnaire IIS depuis le serveur. Se positionner sur le nœud correspondant au serveur (au-dessus de "Pools d’applications"). Double-cliquer sur "Éditeur de configuration" :

-
Ouvrir la section "system.applicationHost" --> "applicationPools" :

-
Déplier "applicationPoolDefaults" afin d’éditer le champ "environmentVariables" avec le menu "…" en fin de ligne :

-
Cliquer ensuite sur l’action « Ajouter » à gauche puis saisir, en bas, dans « Propriétés » :
| Propriétés | |
|---|---|
| name | DOTNET_ROLL_FORWARD |
| value | LatestMajor |

- Fermer cette fenêtre.
- Cliquer sur « Appliquer » en haut à droite :

- Recyclez les pools concernés.
Configuration PowerShell
Tout ce que l’on vient de voir peut-être automatisé en deux lignes de PowerShell.
Copier les lignes ci-dessous dans un fichier avec une extension .ps1, ou directement dans un terminal PowerShell exécuté en tant qu’administrateur :
# Define system environment variable
[Environment]::SetEnvironmentVariable("DOTNET_ROLL_FORWARD", "LatestMajor", "Machine")
## Define default environement variable for IIS app pools
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/applicationPools/applicationPoolDefaults/environmentVariables" -name "." -value @{name='DOTNET_ROLL_FORWARD';value='LatestMajor'}
Configurations alternatives
Est détaillé ici quelques méthodes pour faire une configuration plus localisée de la variable DOTNET_ROLL_FORWARD. Ces alternatives restent moins recommandées car elles nécessitent d’être réappliquées pour chaque nouvelle installation de la solution Avanteam sur le serveur et revérifiées après chaque mise à jour de la solution Avanteam.
Configuration par App Pool
Il est possible de ne cibler qu’un app Pool IIS plutôt que tous les app pools.
Pour ce faire, graphiquement il faut aller dans le menu "…" au bout de la ligne (Collection) de la configuration des app pools :

Et en PowerShell cela donne :
$Pool = 'poolName'
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/applicationPools/applicationPoolDefaults/environmentVariables" -name "." -value @{name='DOTNET_ROLL_FORWARD';value='LatestMajor'}
Configuration par fichiers
Il est aussi possible de paramétrer la variable dans les fichiers *.runtimeconfig.json situés à côté des exécutables Net 6.0.
| Original | Modifié |
| |
A date, la liste de fichier concerné est la suivante :
PStudio.Administration\net6.0\AssemblyInspector.runtimeconfig.jsonPStudio.Administration\net6.0\ FixConfig.runtimeconfig.jsonPStudio.Net.Web\Root\Avanteam.Root.runtimeconfig.json
Cette liste pourrait être amenée à évoluer au fil des versions, mais peut toujours se retrouver via la commande PowerShell suivante, à exécuter dans le dossier C:\Program Files\Avanteam :
ls *.runtimeconfig.json -Recurse