Accueil > Articles > Invalid value for ‘OSVersion’

Invalid value for ‘OSVersion’

J’ai récemment voulu recompiler un petit programme écrit en C# 2.0 sur une nouvelle machine. Normalement ça aurait du fonctionner sans problèmes car il n’utilisait aucun composant externe et je n’y avais fait aucune modification. Cependant la compilation a échouée sur une erreur "Invalid value for 'OSVersion'", sans donner plus d’informations. Le double-clic sur l’erreur n’affichait rien et une recherche sur ‘OSVersion’ dans le programme ne donnait aucun résultat :

Invalid value for OSVersion

 

Après quelques recherches sur Internet (notamment ici), j’ai pu découvrir que le problème venait apparemment du compilateur, qui vérifiait la variable d’environnement ‘OSVersion’ :

Pourtant je compilais d’autres programmes tous les jours sur cette machine et je n’avais jamais rencontré ce problème jusque là , et encore moins touché à cette variable d’environnement. La seule différence avec ces autres programmes venait de la présence de la publication via ClickOnce pour cette application. En fouillant dans les propriétés du projet, il m’a suffit de désactiver l’option « Enable ClickOnce Security Settings » dans l’onglet « Security » pour réussir à compiler à nouveau correctement le programme :

Options ClickOnce

Options ClickOnce

 

Ce problème est d’ailleurs cité par Microsoft dans un classement des problèmes les plus courants rencontrés avec ClickOnce : TOP 10 des problématiques rencontrées avec les applications ClickOnce 

Pour corriger ce souci, il suffit donc d’ajouter les chiffres manquant pour avoir un numéro de version à 4 chiffres dans la variable OSVERSION. Le troisième numéro (numéro de build) s’obtient facilement :

  • Soit dans une fenêtre de l’explorateur Windows : Dans le menu Aide -> A propos de…
  • Soit dans une commande MS-DOS en tapant « ver »
  • Soit encore dans les informations système : Menu Démarrer → Accessoires → Outils système → Informations Système.
Variables d'environnement

Variables d'environnement

 

Pour ma part, j’ai corrigé la variable pour "5.1.2600.0" au lieu de "5.1". Après un redémarrage de Visual Studio, le programme s’est correctement compilé avec l’option « Enable ClickOnce Security Settings ».

Bon sinon je ne comprend pas trop en fait pourquoi le compilateur va chercher ce numéro de version dans une variable d’environnement alors qu’il est possible d’avoir quelque chose de beaucoup plus fiable et plus complet par d’autres moyens (la commande MS-DOS par exemple). Surtout que Clickonce reste un composant relativement récent.

Categories: Articles Tags: , ,
  1. Luigi33
    11/01/2012 à 11:17 | #1

    Merci vous venez de résoudre un défaut que je trainai depuis pas mal de temps

  1. Pas encore de trackbacks