Visual Studio : erreur CS8357

Dans mes projets Visual Studio j'aime bien utiliser "1.0.*" dans l'attribut AssemblyVersion pour que le numéro de build et de révision s'incrémentent automatiquement à chaque compilation. Mais dans les dernières versions, si on crée un projet et qu'on vient modifier la valeur par défaut ("1.0.0.0") pour la remplacer par "1.0.*", on a l'erreur suivante à la compilation :

Error CS8357: La chaîne de version spécifiée contient des caractères génériques qui ne sont pas compatibles avec le déterminisme. Supprimez les caractères génériques de la chaîne de version, ou désactivez le déterminisme pour cette compilation (33, 28)

En fait le déterminisme est activé par défaut dans tous les nouveaux projets créés. Le déterminisme, c'est une fonctionnalité du compilateur Roslyn. Cette option permet de garantir que 2 codes source identiques, compilés dans les mêmes conditions, produiront exactement le même assemblage, à l'octet près. C'est apparemment utile dans certains scénarii, notamment pour accélérer l'exécution des tests automatisés. Mais évidemment, l'option "1.0.*" est incompatible avec cette option puisque la version change pour refléter l'heure et la date à laquelle on a compilé.

Je ne sais pas si l'activation de cette option par défaut est volontaire ou si c'est un bug, mais en tout ca pour la désactiver, il faut modifier directement le fichier .csproj : clic droit sur le projet dans l'explorateur de solutions, option Décharger le projet, puis nouveau clic droit Modifier xxx.csproj. Là vous devriez trouver un élément Deterministic dans le XML qui doit être à true, il faut le passer à false. Ensuite nouveau clic droit sur le projet, puis Recharger le projet.

Etiquettes:

Ajouter un commentaire