Je construis une bibliothèque de classe C# et j'utilise la version bêta 2 de Visual Web Developer/Visual C# 2010. J'essaie d'enregistrer des informations sur la version de .NET dans laquelle la bibliothèque a été construite. Dans le passé, j'ai pu utiliser ceci:Qu'est-il arrivé à la définition de version .NET avec v4.0?
// What version of .net was it built under?
#if NET_1_0
public const string NETFrameworkVersion = ".NET 1.0";
#elif NET_1_1
public const string NETFrameworkVersion = ".NET 1.1";
#elif NET_2_0
public const string NETFrameworkVersion = ".NET 2.0";
#elif NET_3_5
public const string NETFrameworkVersion = ".NET 3.5";
#else
public const string NETFrameworkVersion = ".NET version unknown";
#endif
Je pensais que je pouvais ajouter:
#elif NET_4_0
public const string NETFrameworkVersion = ".NET 4.0";
Maintenant, dans Projet-> Propriétés, mon cadre cible est » .NET Framework 4 ". Si je vérifie:
Assembly.GetExecutingAssembly().ImageRuntimeVersion
Je peux voir ma version d'exécution est v4.0.21006 (donc je sais que j'ai .NET 4.0 installé sur mon CPU). Je m'attends naturellement à voir que ma variable NETFrameworkVersion contient ".NET 4.0". Ce ne est pas. Il contient ".NET version unknown". Donc, ma question est la suivante: pourquoi NET_4_0 n'est-il pas défini? La convention de dénomination a-t-elle changé? Existe-t-il une autre façon simple de déterminer la version de la construction du framework .NET dans les versions> 3.5?
D'où proviennent les constantes NET_2_0, NET_3_5 etc.? Je peux trouver beaucoup de références à eux dans les documents Mono, mais rien de officiel sur microsoft.com. –
Tom, avez-vous vérifié votre fichier csproj pour voir s'il y avait d'autres inclusions ou cibles autres que les standards Microsoft? Cela peut être une fonctionnalité de construction personnalisée incluse dans ce projet. –