Il y a beaucoup de réponses ici, mais je n'ai pas vu celle-là, qui, je crois, est la bonne façon de corriger ce bogue de Visual Studio. J'ai récemment dû installer Visual Studio 2015 sur un système qui disposait déjà de Visual Studio 2017 et 2019 ainsi que de plusieurs versions du SDK Windows. Lors de la construction soit x86 ou x64/debug ou release, il ne pouvait pas trouver RC.EXE. La raison en est que le chemin d'accès à l'exécutable du projet (le chemin d'accès à l'exécutable du projet). $(VS_ExecutablePath)
) est incorrecte. Pour x86 et x64, elle est fixée à
C:\Program Files (x86)\Windows Kits\10\bin\x86
C:\Program Files (x86)\Windows Kits\10\bin\x64
ce qui semble être correct si 10
est remplacé par 8.1
mais je veux utiliser le SDK Windows 10 et non le SDK Windows 8.1.
Les exécutables du SDK de Windows 10 se trouvent en fait dans ces répertoires (c'est-à-dire que ce sont les SDK que j'ai installés en ce moment) :
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x64\rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\RC.Exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64\RC.Exe
Dans les SDK de Windows 10, le TargetPlatformVersion
fait partie du chemin d'accès, ce qui permet de mettre à jour les exécutables/include/libs du SDK pour chaque nouveau fichier TargetPlatform
dès sa sortie.
Choisir un RC.EXE
et le copier dans un répertoire dans le chemin d'accès fonctionnerait mais chaque TargetPlatformVersion
Le répertoire du SDK a une RC.EXE
Il est donc possible que vous ne sachiez pas lequel vous utilisez, surtout si vous avez plusieurs développeurs et plusieurs machines de construction. Il est préférable de le corriger dans les projets.
Pour réparer cela,
- Sélectionnez tous les projets concernés avec Shift-Click.
- Cliquez avec le bouton droit de la souris sur un projet sélectionné et sélectionnez Propriétés,
- Sélectionnez les répertoires VC++ sur la gauche
- Sélectionner les répertoires exécutables
- Cliquez sur le menu déroulant à l'extrême droite et sélectionnez Editer.
Double-cliquez sur la ligne vide du haut et pour les projets x86/win32, ajoutez ceci aux configurations Debug et Release :
$(WindowsSdkDir)bin\$(TargetPlatformVersion)\x86\
Pour les projets x64, ajoutez ceci aux configurations Debug et Release :
$(WindowsSdkDir)bin\$(TargetPlatformVersion)\x64\
Laissez la case "Hériter des valeurs par défaut du parent ou du projet" cochée. La fenêtre "Valeur évaluée" peut apparaître brouillée, mais elle semble être corrigée dès que vous enregistrez et fermez les pages de propriétés.
Je n'ai pas eu à mettre à jour "Library Directories" ni "Include Directories" mais ils pourraient nécessiter des changements similaires.
Cela va créer un certain nombre d'entrées dans chaque fichier de projet Visual Studio qui ressemblent à ceci :
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ExecutablePath>$(WindowsSdkDir_10)bin\$(TargetPlatformVersion)\x86\;$(ExecutablePath)</ExecutablePath>
</PropertyGroup>
La bonne façon de résoudre ce problème est de modifier la feuille de propriétés de l'utilisateur. Microsoft.Cpp.Win32.user
ou de définir votre propre feuille de propriétés pour ajouter cette valeur aux valeurs héritées, mais le gestionnaire de propriétés de Visual Studio 2015 semble être bogué (2017/2019 est bien meilleur), donc j'ai trouvé qu'il était préférable de simplement mettre la valeur directement dans les projets. Cela signifie également que tout autre développeur ou machine de construction qui utilise ces projets sera en mesure de construire, tant que le SDK Windows 10 choisi est installé.