Erreur MSB6006: “mt.exe” terminé avec le code 31
J'ai rencontré ce problème, aujourd'hui, lors de la migration d'une VS2008 solution pour VS2010. Le problème est survenu dans l'un des scénarios suivants:
- Reconstruire Solution
- Nettoyer suivie par générer la Solution
Si j'ai fait une deuxième version après l'un de ces, le problème ne se présentent pas. À l'aide de Google, tout ce que je vraiment venu avec est ans des blogs de Microsoft en disant qu'ils sont incapables de reproduire le problème, ou qu'il est corrigé dans une future version.
La meilleure chose que j'ai trouvé est ici: Mikazo Tech Blog: Résoudre MT.exe les Erreurs dans Visual Studio 2010
Dans l'article ci-dessus, il dit que le problème est lié à la génération de Manifestes, et que la solution est de désactiver Manifeste dans les paramètres dans le de l'éditeur de liens-->Manifeste. Je n'ai pas besoin Manifeste de ce projet, mais je n'étais toujours pas satisfait.
J'ai résolu ce problème, et vais simplement répondre à ma propre question, parce que je n'ai pas trouvé cette erreur spécifique (code 31) sur StackOverflow.
- Le lien pour Mikazo Tech Blog est désormais rompu.
Vous devez vous connecter pour publier un commentaire.
À l'aide de processus de surveillance et de dbgview j'ai découvert msmpeng (Microsoft Security Essentials) a été l'accès au fichier, juste au moment où mt.exe voulu la faire exclusivement. À l'exclusion du répertoire de développement résolu le problème.
C'est encore une solution de contournement de cours.
AVERTISSEMENT: Cette erreur peut également se produire à la suite d'avoir une fenêtre de l'Explorateur Windows ouvrez le dossier contenant le fichier *.exe qui vous sont actuellement en train de construire.
Par exemple: Explorer ouvertes dans
/.../MyProj/Debug/
tout en essayant de construire leDebug
version de votre code dans Visual Studio.J'étais en colère contre moi-même pour ~10min avant la réalisation de ce.
Dans mes projets, les Intermédiaires et de Sortie des répertoires ont été définies:
Sous C/C++-->Fichiers de Sortie, j'ai eu la suivante:
Sous de l'éditeur de liens-->Fichier Manifeste, j'ai eu:
La guérison a été de supprimer la fin
\
de mon C/C++-->Fichiers de Sortie l'article (parce que c'est déjà une partie de ces variables):Normalement, le double de l'aide
$(IntDir)
ou$(OutDir)
avec un trailing\
ne semble pas causer des ennuis, même si c'est une mauvaise pratique. Je ne me souviens pas si je l'ai fait par accident ou si le processus de conversion, mais, pour quelque raison que ce soit, il semble avoir été gâcher MT.exe.J'espère que ce sera utile à quelqu'un d'autre qui rencontre ce problème. Vos réglages peuvent être différents, mais considèrent qu'elle peut être liée à mal formés les noms de fichiers.
Essayez de désactiver Windows Defender (ou éventuellement d'autres anti-virus les logiciels connexes). Windows Defender est connu pour verrouiller les fichiers parce que MT.EXE s'exécute après que l'éditeur de liens est fini. WD sauts dans le milieu de vérifier sur le nouvellement construit EXE et elle se verrouille en place pour la MT.EXE.
De donner du crédit à https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/c5a3e2c3-fbf4-4268-a551-8cee195be586/test-case-13-for-vista-certification?forum=windowscompatibility, j'ai trouvé ceci a été résolu en fixant le caractère '-' dans le post de construire la ligne de commande. Je crois qu'un mauvais copier/coller des efforts ont remplacé un trait d'union avec un tiret.
la suppression du "programme de débogage de la base de données" dans "debug" le dossier a fonctionné pour moi.
Ce problème est arrivé quand j'avais de l'exécution de l' .exe dans le dossier de débogage sur une haute priorité.
Run VS en tant qu'administrateur. Il a résolu le problème pour moi.
J'ai un projet (*.sln) écrit en visual studio c 8.0. Il a été migré vers VC10 récemment. Quand j'ai choisi le "mode de Libération", il a été compilé avec succès. Mais si je choisis "mode Debug", le message d'erreur "MSB6006 mt.exe code 31" est arrivé.
J'ai trouvé que, dans le mode debug, il a utilisé une mauvaise sous-projet de démarrage.
Après fixation du démarrage du sous-projet, il va bien jusqu'à présent.
---- nouveau--
Cela ne résout pas le problème. Il est tout à fait le problème de disparaître provisoirement par la reconstruction de-tous. Il existe également d'autres défauts causés par la migration. Les "ressources.h" est manqué de le nouveau projet et de la "winres.rc" est raccourcir.
Dans mon cas c'était un problème avec TortoiseGit. La suppression de Débogage et de publication des dossiers à partir du dépôt GIT résolu le problème.
Vérifier si vous avez un logiciel antivirus comme AVG. Exclure les fichiers manifest dans le logiciel anti-virus à la liste d'exclusion.
Recherchez un MSB8012 avertissements. Probablement, vous avez une autre spécification de sortie pour la sortie C++ de la valeur et de la valeur de Sortie de l'éditeur de liens.