Problème de l'Exécution par Lots de Fichiers en Pré-Événement de construction
Je suis en train d'exécuter un fichier de commandes lors d'une pré-construction de l'événement. J'ai un nouveau projet et ont ajouté foo.chauve-souris à elle. Le fichier contient la ligne suivante:
echo bar
Quand j'ai mis le pré-événement de construction de la ligne de commande pour foo.chauve-souris, j'obtiens l'erreur suivante:
La commande "foo.chauve-souris" terminé avec le code 9009.
Quand j'ai mis le pré-événement de construction de la ligne de commande pour appeler foo.chauve-souris, j'obtiens l'erreur suivante:
La commande "appeler foo.chauve-souris" terminé avec le code 1.
Tout ce que j'ai lu liées à ces codes, qui indique généralement qu'il ya un problème avec le contenu du fichier de commandes (probablement pas dans ce cas), ou que le système ne peut pas trouver le fichier de commandes.
Le fichier batch fonctionne très bien à partir d'une invite de commande. Les choses que j'ai déjà essayé: le fichier a été Créé à l'aide de différents outils, les différents codages, plaçant exit 0 dans le fichier, différents construire des actions pour le fichier et copier le fichier dans le répertoire de sortie. Le tout avec pas de chance.
Ce qui me manque? Il doit être quelque chose de simple.
Mise à jour: Yep, il était simple de la longueur du chemin est trop long. Voir la réponse ci-dessous pour plus de détails.
Merci!
- Avez-vous essayé de donner à Chacun l'accès pour la lecture/écriture?
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce travail et je l'ai trouver une image vaut mille mots, voici donc l'installation complète dans une seule capture d'écran.
Il est possible que vous avez un autre
foo.bat
quelque part dans lePATH
. Essayez de spécifier le chemin d'accès complet au fichier de commandes commeC:\Path\to\foo.bat
.Lorsque le projet est construit le répertoire courant est celui avec le
.vcproj
fichier. Le chemin de commande doivent être spécifiés par rapport à ce répertoire, si ce n'est pas dans lePATH
.Une chose de plus à essayer de diagnostiquer le problème serait de préciser les
cmd
dans la pré-construction de commande de l'événement explicitement comme ceci:ou même
$(SolutionDir)Scripts\PostBuild.bat
à l'origine, mais alors qui a donné le code d'erreur 9009. Lorsque j'ai utilisécmd $(SolutionDir)Scripts\PostBuild.bat
cela a fonctionné pour moi, merci! Mon fichier bat test contient une seule ligneexit 0
aucun autre espace blanc.cmd
juste à ne pas montrer une erreur... mais il n'était pas en cours d'exécution du fichier de commandesIl semble que mon problème était la longueur du chemin d'accès au fichier de commandes. Comme c'était une preuve de concept, je laisse VS le créer dans l'emplacement par défaut:
Dès que j'ai déplacé la solution à un emplacement avec un chemin plus court, il a bien fonctionné. =P
Merci pour les suggestions!
1) voir les détails de l'erreur par View => Sortie
2) essayez d'appel "$(SolutionDir)\xx\xx.chauve-souris"
J'ai résolu le problème en créant .fichier bat à partir de l'explorateur windows, puis à son tour, y compris dans mon projet, au lieu de créer directement dans VS 2010.
Le répertoire de travail en cours de la pré-construction et de la post-construire des événements est le répertoire de sortie spécifié par la macro $(OutDir), pas le répertoire du projet.
Les balises suivantes dans "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets" spécifier ceci:
Le problème je pense est qu'il y a un caractère d'ESPACE dans votre chemin d'accès au dossier.
Donc cette commande va probablement travailler pour
c:\development\projectABC\foo.bat
mais pas pourc:\development\project ABC\foo.bat
Au moins, c'était le problème pour moi, il pourrait y avoir d'autres questions, mais je crois que cela est le plus commun. La solution: mettre des guillemets autour de vous lot d'appel:
Cliquez-droit sur le projet --> sélectionnez propriétés --> sélectionnez l'événement de construction de l'Onglet, Puis d'Effacer le Pré-événement de construction des lignes de commentaire.