web-dev-qa-db-fra.com

Evénement post-construction terminé avec le code 1

J'essaie de nettoyer le dossier de publication à l'aide de l'événement Post Build afin que je supprime les fichiers .xml et .pdb et que je tente de copier tous les fichiers dll dans un dossier de bibliothèque personnalisé avec un bogue Post Build Exited with Code 1

Mon code:

if $(ConfigurationName) == Release del "$(TargetDir)*.xml", "$(TargetDir)*.pdb"
if $(ConfigurationName) == Release xcopy "$(TargetDir)\*.dll" "$(TargetDir)\lib\"

Les 2 commandes sont séparées par une nouvelle ligne comme indiqué ... Le dossier Lib existe également.

6
Daniel Eugen

Au lieu de

xcopy $(TargetDir)*.dll $(TargetDir)lib\

tu devrais utiliser

xcopy "$(TargetDir)*.dll" "$(TargetDir)lib\"

pour gérer les espaces dans le chemin.

6
Reg Edit

Essayez d'ouvrir VS avec Exécuter en tant qu'administrateur -> Ouvrir le projet -> Construire.

3
D T

Commencez par utiliser $(TargetDir)\, car certaines variables renvoient sans barre oblique finale, ce qui concaténerait votre chemin afin que vous recherchiez bin\Debuglib\ au lieu de bin\Debug\lib.

Comme l'a souligné @Uwe Keim, Le code de retour 1 signifie qu'aucun fichier ne peut être copié . Cela peut également arriver si vous pointez sur un dossier non valide, ce qui renforce l'idée que vous pourriez avoir besoin de ce \.

Il est également possible que la commande del ait échoué, bien que le même article technique de del n'indique aucun code de retour. Certaines sources de forum indiquent qu'un code de retour de 1 peut indiquer l'échec d'une suppression.

1
David

Cette modification a fonctionné pour moi:

del *.XML, *.pdb
xcopy /y "$(TargetDir)*.dll" "$(TargetDir)lib\"

1). Omettre la variable du répertoire cible dans la commande del

2) Option/y dans xcopy Note de la page d’aide de Microsoft:/y: Supprime l’invite à confirmer que vous souhaitez remplacer un fichier de destination existant.

0
Jsinh

Si vous utilisez un chemin relatif dans la commande Copier, assurez-vous que le répertoire parent fait référence au répertoire approprié que vous souhaitez, sinon vous obtiendrez une erreur du code de sortie 1.

Pour ex:

copy "C:\SolnFolder\project1\release\bin\xyz.dll" "..\MainProject\bin\x86\"

Ici, Project1 et MainProject coexistent chez SolnFolder. Quand j'ai pensé à copier xyz.dll dans le dossier x86 de MainProject, cela a échoué car ..\used dans la commande de copie fait référence au dossier de publication du chemin source au lieu de SolnFolder. Par conséquent, le problème ci-dessous a résolu le problème:

copy "C:\SolnFolder\project1\release\bin\xyz.dll" "..\..\..\MainProject\bin\x86\"

Remarque: également, assurez-vous que les guillemets sont utilisés avec chaque chemin relatif

0
RJN

Cette solution a fonctionné pour moi

xcopy "$(TargetDir)*.dll" "$(TargetDir)lib\"
0
SHIBIN