2009-12-23 6 views
2

J'ai une solution de studio visuel (natif C++) avec plusieurs projets, certains étant des DLL. Les dépendances des projets entre eux sont introduites dans les "dépendances du projet". Chaque fois qu'une DLL est modifiée et reconstruite, que cette modification affecte ou non d'autres projets (c'est-à-dire que seule l'implémentation et non les déclarations sont modifiées), l'intégralité de l'arbre de dépendance de cette DLL est reliée (non recompilé, cependant) chaque fois qu'un projet dépendant est construit ou testé en tant que candidat de construction, alors que cela est complètement inutile. Si j'exécutais le projet dépendant de l'extérieur de VS avant le processus de re-liaison, il fonctionnerait très bien tel quel.Les dépendances de Visual Studio DLL provoquent une nouvelle liaison inutile

Étant donné que le projet est de grande taille, ce processus non contractuel prend beaucoup de temps. Un moyen de résoudre ce problème?

Répondre

-1

Eh bien, c'est un comportement typique de VS, quand vous "reconstruisez une solution" ... pour surmonter ce "Construire" le composant modifié plutôt que de le "Reconstruire" et vous devriez aller bien. Vous pouvez également décharger les projets/DLL dont vous savez qu'ils ne seront pas modifiés et, lors de la reconstruction, VS ne créera que les projets chargés et ignorera les projets déchargés.

Je ne sais pas ce que vous voulez dire quand vous dites « VS re-link et non recompiler », lorsque vous reconstruisez une solution, tous les projets sont compilés et liés selon l'arbre des dépendances ...

3

Si je comprends ce que vous dites, alors vous avez reconstruit une DLL et vous plaignez qu'il relit tout ce qui utilise cette DLL?

Cela me semble correct, si vous avez changé une DLL, alors vous devez relier tout ce qui l'utilise, car cela dépend. Je suis conscient que vous pouvez changer l'implémentation à l'intérieur d'une DLL et si vous faites attention à garder l'interface identique, vous n'aurez pas à la relier, mais VC++ comme la plupart des outils de construction ne fonctionne qu'avec les temps de changement le fichier a sûrement changé, donc la seule chose sûre à faire est de relier.

Si vous ne voulez pas que cela se produise alors vous avez probablement besoin du projet A pour lier à une copie fixe de la bibliothèque pour la DLL et non celle du projet

Questions connexes