2

J'utilise un événement de pré-construction dans Visual Studio pour exécuter un fichier batch (.bat) qui effectue une génération de code (en particulier, j'utilise SqlMetal.exe pour générer du code LinqToSql).Les événements de pré-construction Visual Studio sont-ils garantis avant la fin de la compilation?

Le fichier batch est-il garanti pour s'achever avant le début de la compilation? Ou exécute-t-il le lot de manière asynchrone?

Conclusion: Je veux m'assurer que le nouveau code est compilé, pas l'ancien code.

Si ce n'est pas garanti - quelles sont les solutions disponibles?

+1

Je suis à peu près sûr que le fichier séquentiel se terminera, mais cela ne signifie pas que les processus qui y ont été créés se sont terminés. – EricLaw

Répondre

6

Oui. Mais notez que si vous avez plus d'une étape dans votre pré-construction, seule la dernière étape sera vérifiée pour les erreurs. Voir Gotcha! Visual Studio Pre/Post-Build Events pour plus d'informations.

+0

Merci et merci pour le conseil! +1 Il semble y avoir un peu de désaccord ici. Jetez un oeil au commentaire d'EricLaw (ci-dessus). – devuxer

+0

Nous avons tous les deux raison :-) Si vous appelez un fichier batch qui engendre lui-même des processus asynchrones, alors le fichier batch lui-même est garanti de se terminer, mais les processus asynch ne le sont pas. Si vous voulez que votre fichier séquentiel attende les processus engendrés, utilisez "start/wait". –

+0

Ahh, merci :) Je ne crois pas avoir de processus asynchrones. L'utilisation de 'start/wait' équivaut-elle à ne pas utiliser' start'? Je suis simplement en train de lancer un couple .exe qui prend quelques secondes et faire un couple renommer et déplacer les opérations. – devuxer

3

Le fichier batch complet seulement après le processus, il a commencé a terminé lui-même, sauf si vous utilisez la commande de démarrage dans le fichier batch. Comme un test simple, vous pouvez simplement créer un fichier de commandes comme ceci:

notepad.exe 

Et définissez cela comme votre événement de pré-construction. Vous verrez que la construction commence seulement après que vous avez fermé le bloc-notes.

+0

+1 Merci, je n'utilise pas la commande 'start' dans aucun de mes lots. – devuxer