Cela apparaît lorsque vous appuyez sur F1 dans la boîte de dialogue Framework et références:
Par défaut pour les nouveaux projets, le framework ciblé est défini sur .NET Framework 4. L'EDI ne prend pas en charge la modification du framework ciblé, mais vous pouvez le modifier manuellement. Dans le fichier projet (.vcxproj), le framework ciblé par défaut est représenté par l'élément de propriété v4.0. Pour modifier la structure ciblée, déchargez le projet, utilisez un éditeur de texte pour ouvrir le fichier de projet, puis modifiez la valeur de l'élément de propriété de v4.0 à une autre version installée sur votre serveur. Par exemple, si vous spécifiez v3.5, qui représente le .NET Framework v3.5, Visual Studio 2008 SP1 doit être installé . Enregistrez et fermez le fichier, rechargez le projet et vérifiez que le framework ciblé est affiché dans la page de propriétés. *
Ce n'est pas très précis sur les projets convertis, vous devrez ajouter l' <TargetFrameworkVersion>
élément vous-même. Mettez-le dans le PropertyGroup intitulé "Globals":
<PropertyGroup Label="Globals">
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<others...>
</PropertyGroup>
L'histoire est différente lorsque vous utilisez VS2012 et plus, la première version de VS qui a acquis le paramètre Platform Toolset dans la page de propriétés Général. Vous devez ensuite sélectionner "v90" pour obtenir une version correcte qui cible la version 3.5. C'est cependant maladroit, vous devez avoir toutes les versions intermédiaires de VS installées sur la machine pour avoir cette sélection disponible.
Pourquoi vous avez besoin de VS2008 installé nécessite une explication en soi. Le problème principal est que la bibliothèque d'exécution C (msvcrt100.dll et versions ultérieures) contient du code .NET pour prendre en charge l'exécution de code managé. Le détail crucial est un initialiseur de module qui garantit que le CRT est correctement initialisé dans un programme qui utilise le code C ++ / CLI. Ce code cible toujours .NET 4 et comme il est intégré dans msvcrt100.dll (et plus), vous avez toujours une dépendance absolue sur le runtime v4.0.30319. Vous ne pouvez avoir une dépendance pure v2.0.50727 que lorsque vous utilisez l'ancien runtime C, msvcrt90.dll. Vous ne pouvez être sûr que vous avez une dépendance msvcrt90.dll lorsque vous utilisez les fichiers #include du compilateur de VS2008.
Froid dur fait qu'il est assez nécessaire de passer bientôt à .NET 4, vous aurez du mal avec des problèmes de construction comme celui-ci si vous ne le faites pas. Il y a très peu d'obstacles pratiques à cela, .NET 4 est largement disponible gratuitement sur toutes les cibles que vous imaginez. Surmonter le FUD associé au passage à une version d'exécution supérieure n'est généralement que le vrai problème. Aucune raison de peur et de doute, il est stable.