2 votes

Puis-je configurer VisualStudio 2008 pour qu'il construise toujours le projet de démarrage ?

J'ai une solution avec plusieurs projets, où le projet de démarrage a un événement post-build qui fait toute la copie des projets "plugin" et d'autres tâches d'organisation. Après avoir mis à niveau la solution de VS 2005 à VS 2008, il semble que l'événement post-build ne se déclenche que si je modifie le projet de démarrage, ce qui signifie que mes plugins mis à jour ne sont pas connectés à la session de débogage en cours. C'est logique, mais cela ressemble à un changement de comportement. Quelqu'un d'autre a-t-il remarqué un changement de comportement en ce qui concerne les projets qui sont construits ?

Quelqu'un connaît-il une solution de contournement que je peux utiliser pour forcer le projet de démarrage à se reconstruire chaque fois que j'appuie sur F5 ? Peut-être ai-je configuré VS 2005 de cette manière il y a si longtemps que j'ai oublié tout cela...

5voto

xanadont Points 2723

Je pense que vous devez réorganiser les responsabilités. Chaque composant devrait être responsable de lui-même et donc copier sa bonté générée là où elle doit aller. De cette façon, peu importe si/qui/quoi/quand/où a été construit. Ce qui est mis à jour se mettra à la bonne place.


Les autres suggestions sont à proscrire car elles contournent l'intelligence du compilateur qui sait quand une reconstruction est nécessaire pour le projet principal. Et donc tuer tout gain de temps de compilation. Si vos projets "plugins" sont des assemblages (et pas seulement des références au projet principal), alors vous n'avez pas besoin de reconstruire le projet principal à chaque fois qu'un plugin est reconstruit. Le nouvel assemblage sera sélectionné dans le processus / débogueur sans que le projet principal ait besoin d'être reconstruit.

3voto

OJ. Points 16939

Pourquoi ne pas simplement ajouter une dépendance au projet "startup" pour chacun des plugins ? Cela forcera le projet à être reconstruit si l'un des autres change, et vous n'aurez pas à vous occuper d'autres événements pré/post-construction.

2voto

lomaxx Points 32540

Je ne sais pas si c'est la bonne façon de faire, mais vous pourriez ajouter un événement de pré-construction à votre projet de démarrage (s'il est statique) pour nettoyer le projet qui forcera une reconstruction.

quelque chose comme :

devenv project.csproj /clean

2voto

John Richardson Points 1197

C'est pénible. Ce dont nous avons vraiment besoin, c'est que Microsoft nous permette de nous connecter à un événement Post-Solution Build. Vous pouvez le faire via des macros mais c'est trop compliqué.

Je suppose qu'il s'agit d'un projet C++ car je n'ai pas ce problème avec C#.

Voici ma solution, elle n'est pas élégante mais elle fonctionne :

  • Créer un nouveau projet dont le seul but est d'exécuter le script post-build. Marquez-le comme dépendant de tous les autres projets de la solution.
  • Ajoutez un fichier fictif à ce projet appelé dummy.h ou autre.
  • Faites un clic droit sur dummy.h dans l'explorateur de solutions et sélectionnez Propriétés.
  • Sélectionnez "Custom Build Step".
  • Pour la ligne de commande, tapez 'echo' et pour les sorties, tapez simplement 'dummy' ou quelque chose d'autre qui n'existera jamais.

Ce projet, et donc le script post-build, sera désormais exécuté à chaque build.

John.

1voto

John Richardson Points 1197

Flipdoubt : il s'agit de projets créés à l'origine en 2008. Si le C# ne fonctionne pas, je vous suggère de regarder dans l'onglet Build Events et de vérifier le paramètre de la liste déroulante "Run the post-build event :". S'il est réglé sur "Lorsque la construction met à jour la sortie du projet", cela pourrait être votre problème, essayez de le régler sur "Lorsque la construction est réussie".

John.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X