Pourquoi Visual Studio 2008 reconstruit-il toujours tout mon projet?
J'ai un projet Visual Studio avec environ 60 fichiers source C++. Je peux faire un build, et il se termine sans erreur. Mais si j'ai immédiatement frappé F7 à nouveau, il est toujours re-compile environ 50 de la source des fichiers. Il n'a pas re-compiler tous les fichiers, ce qui est étrange.
J'ai Activer la régénération minimale' (/Gm). Toutes les idées pour lesquelles elle pourrait être en train de faire cela?
Aucun des fichiers ont une Date de modification dans l'avenir.
source d'informationauteur Rocketmagnet
Vous devez vous connecter pour publier un commentaire.
Sont l'un de vos dates de fichier dans l'avenir? Cela peut se produire si vous avez changé de fuseaux horaires ou changé le système de l'horloge. Les Dates seront, à l'avenir confondre les IDE et la force de reconstruire à chaque fois F7 ou F5 est frappé.
J'ai résolu le même problème.
Dans mon cas, le compilateur affiche d'avertissement, que /Zi option est requise si l' /Gm est spécifié.
/Gm permet de "minimum reconstruire", ce qui nécessite des informations de débogage dans .fichier pdb. Donc, si vous ne souhaitez pas utiliser .pdb, également désactiver un minimum de reconstruire - il résolu un problème dans mon cas.
Probablement une question de dépendances.
Envisager les possibilités suivantes:
Si vous avez personnalisé construire des outils définis pour certains des fichiers dans votre solution, assurez-vous que la sortie de la propriété contient la droite du nom de fichier(s). Si la sortie de l'outil de génération ne correspond pas à celle indiquée(s) dans les noms de fichier de sortie, le constructeur va reconstruire ce fichier.
Si vous avez personnalisé créer des événements, vérifiez si la sortie de construire ces événements n'affectent pas les dépendances des fichiers à être construit.
J'ai eu des problèmes lors de la tentative, au post-construction, de copier ou de déplacer certains fichiers de sortie pour un dossier de création. Le post des opérations de construction qui affectent l'heure de la sortie des fichiers du processus de création de déterminer reconstruire à chaque fois.
Dans mon cas, de tels effets (C++ via VS2005) c'est à la Libération que dans la configuration, et le Studio dit à la sortie de la construction, que l'option de compilateur /Gm est ignorée si /Zi - option n'est pas définie. Après réglage /Zi via
Propriétés de Configuration -> C/C++ -> Général> les Informations de Débogage Format : Base de données du Programme (/Zi) ,
c'était ok. Mais n'est-ce pas là quelque chose de mal, lors de la Libération de Configuration a besoin de quelque chose sur le Débogage? Pas encore clair pour moi!
Propriétés du projet -> "C/C++" -> "Fichiers de Sortie" -> "Programme de Base de données Nom de Fichier" option ne doit pas être vide. Définir cette option en sélectionnant à partir du menu déroulant de la boîte . L'option peut être définie comme ceci: $(IntDir)\vc90.apb. Et ligne ProgramDataBaseFileName="" sera supprimé de fichier vcproj.
Alors seulement changé *le.fichiers cpp sera recompilé lorsque vous générez le projet ou la solution.
Il semble que ce problème peut être causé par beaucoup de choses, mais qu'est-ce résolu pour moi a été:
bin
etobj
dossiers (Clean ne semble pas faire l'affaire)Note: C'était pour un programme C# dans Visual Studio 2010.
Après quelques jours de recherche sur google, j'ai fini avec une solution à mon problème.
J'ai rencontré ce problème quand j'ai déménagé mes projets pour un nouveau PC. J'avais vérifié à plusieurs reprises la date de création des fichiers. Ces dates ont été jusqu'à ce jour, cependant les dates de modification ont été dans le bast (un peu bizarre), même quand j'ai changé les fichiers.
Une simple mise à jour des fichiers résolu le problème.
Je vais avoir le même problème, et il semble être parce que j'ai tourné parcourir les informations. Propriétés->C/C++->Parcourir Info->Permettre à Parcourir Info->Aucun. La seule solution que j'ai trouvé est de le rallumer. C'est une xbox 360 projet, fwiw, mes autres projets n'ont pas le problème.
Une raison en est que si la "date de la dernière modification" pour celui du fichier source est définie pour une certaine date dans le futur: il reconstruit, puis le fichier source est toujours plus tard que l'exécutable.
Ce problème avec les dates peuvent se produire si le fichier source est situé dans un répertoire d'une machine distante (partage réseau), et/ou peut se produire si votre machine n'est pas synchronisé avec la date de la machine qui exécute le serveur de votre source de système de contrôle de version.
Vérifier votre projet comprend tout .h en-tête de fichier qui n'existe pas sur le disque. Arrive toujours à moi quand je supprime un fichier d'en-tête, je ne suis pas y compris n'importe où, mais oublie de le supprimer de ma solution navigator dans VS. Note: manquant en-têtes produisent pas d'erreurs lors de la compilation (lorsqu'il n'est pas #inclus).
Vérifier votre projet Programme de Base de données nom de fichier réglage. Pour une raison quelconque, si ce n'est le nom d'un répertoire (comme
"$(IntDir)\"
), il peut parfois provoquer des VS pour reconstruire votre projet à chaque fois, même si vous n'êtes pas générer les fichiers PDB (c'est à dire les Informations de Débogage Format est réglé sur "Désactivé").C'est un bug dans VS2008; je n'ai pas encore reproduit encore dans VS2010, mais mes tests n'ont pas été approfondie, donc je ne suis pas confiant en disant que le comportement n'est pas présent dans VS2010.
Ce qui a provoqué des symptômes similaires à moi était:
J'ai plusieurs projets dans une solution. Il y en avait .rpc fichiers qui ont été référencés (et donc compilé) >1 projets. Malheureusement, Visual Studio crée .les fichiers obj avec un très simple nommage, il remplace simplement ".rpc" par ".obj". La création de wrapper .rpc-s avec différents noms de résoudre le problème.
J'ai eu quelque chose de similaire. Même si je n'ai avoir des pré-et post-construire des événements, ils n'étaient pas à l'origine du problème. Il s'est avéré que j'avais un certain nombre de projets en bas de la chaîne de référence qui avaient contenu des fichiers qui ont été marqués comme "copy" au lieu de "copier si plus récent" ce qui signifie que ces projets ont toujours été considérés comme "out of date". En changeant tous les de ces de "copier si plus récent", des modifications à mon projet de test d'unité n'est plus obligé de recompiler tous les autres projets.
La désactivation de "recréer minimale" (Propriétés de Configuration > C/C++ > Génération de Code), il fixe pour moi. Le compilateur même laissé un indice:
1>cl : ligne de Commande avertissement D9007 : '/G' exige '/Zi ou /ZI'; option ignoré
Bien que je dois souligner, le compilateur n'a pas ignorer la possibilité qu'il a dit.
Dans mon cas, j'ai changé les données du système de temps de date précédente de sorte qu'il est en train de reconstruire à chaque fois en raison de différents horodatage des fichiers une fois changé à l'heure actuelle pas de reconstruire à chaque fois.
Que nous avons ici régulièrement:
Eu le même problème. Résolue par:
-supprimer le dossier de sortie (obj,exe,tous les fichiers)
-utiliser cygwin
-projet de cd de dossier
-exécuter "tactile *", qui reset fichier modifier la date/l'heure
-construire et profiter de problème fixe
Il y a problème similaire avec le projet de reconstruction.
Visual Studio n'a pas recompiler, mais ré-liens un projet à chaque fois sur F7 frappé.
Solution est simple. Essayez de l'ouvrir dans l'Éditeur de tous les fichiers inclus dans un projet (de l'Explorateur de solutions, double-cliquez sur chaque fichier) et l'enlever de la solution de ces fichiers qui n'existent pas.