2008-12-10 7 views
2

Dans Visual Studio 2005, j'ai une solution avec des dépendances explicites spécifiées via la boîte de dialogue Dépendances du projet. Lorsque je compile via devenv/rebuild Release, par exemple, les projets sont construits dans un ordre différent de celui du chargement de l'EDI. C'est un ordre non autorisé par mes dépendances spécifiées.Quelles sont les causes des builds de ligne de commande de Visual Studio 2005 hors service?

Dans certains cas, devenv accidents :(

Le journal affiche un numéro avant chaque ligne montrant un ordre, que je crois l'ordre induit par la dépendance:

11> MyExeProject - 1 erreur (s), 0 avertissement (s)

Cependant, les builds semblent être commencé dans cet ordre, interrompu et continuer dans un autre ordre -. qui ne fonctionne pas donc 8 peut terminer sa construction avant 11. Si 11 liens en 8, il y a un problème

Une réorganisation similaire se produit dans l'EDI, mais l'ordre de construction conserve l'intégrité.

Besoin de construire par ligne de commande, des idées pourquoi c'est ou quelle est la cause?

Répondre

1

Assurez-vous que vous avez correctement défini vos dépendances dans la solution. Cela peut affecter directement l'ordre de construction.

+0

Le problème avec la réorganisation est dû au fait que plusieurs générations se produisent simultanément en raison de plusieurs cœurs/threads/processeurs. Microsoft essaie d'être plus efficace mais ils ont échoué. – unixman83

-1

Si devenv ne s'est pas crashé lors de la construction dans l'EDI, vous avez eu de la chance.

La solution de contournement suivante est désagréable mais cela a fonctionné pour moi, soupir. Redémarrez et définissez le BIOS pour autoriser l'exécution d'un seul cœur de processeur.

+0

Son intéressant vous dites cela, je vois dans le gestionnaire de tâches, plusieurs copies de cl.exe en cours d'exécution. – theschmitzer

+0

Bien sûr, nous voulons que plusieurs copies de cl.exe soient exécutées, nous voulons que plusieurs cœurs soient utilisés pour leur usage prévu, et nous voulons que devenv.exe trouve un moyen d'éviter le crash. Soupir. –

+0

Ensuite, ouvrez le gestionnaire de tâches et définissez l'affinité du processus pour la solution devenv. – Daemin

8

Ok, voici la vraie réponse, je crois.

Les générations multiprocesseur sont activées. L'ordre de dépendance est toujours appliqué dans l'EDI, mais pas via la ligne de commande, au moins dans VS 2005.

La désactivation s'effectue via Outils/Options/Construire et Exécuter. Définissez un maximum à 1.

+0

J'ai eu un problème similaire lorsque j'ai déplacé une build vers un système multiprocesseur et trouvé la même solution. –

+0

Il semble que cette réponse mérite d'être acceptée! –

Questions connexes