web-dev-qa-db-fra.com

Qu'est-ce que la "liaison incrémentielle"?

J'ai regardé le MSDN de Microsoft et partout sur le Web, mais je n'ai toujours pas pu vraiment avoir une bonne idée de ce que c'est.

Cela signifie-t-il que le programme terminé charge les DLL à différents moments de son exécution, comme apposé à tous en même temps lors du lancement?

Suis-je totalement éloigné? :)

99
Russel

La liaison implique de regrouper tous les fichiers .obj créés à partir de vos fichiers source, ainsi que tous les fichiers .lib que vous référencez, dans votre sortie (par exemple .exe ou .dll).

Sans liaison incrémentielle, cela doit être fait à partir de zéro à chaque fois.

La liaison incrémentielle relie votre exe/dll d'une manière qui facilite pour l'éditeur de liens la mise à jour de l'exe/dll existante lorsque vous effectuez une petite modification et recompilez.

Ainsi, la liaison incrémentielle accélère simplement la compilation et la liaison de votre projet.

Le seul effet d'exécution qu'il pourrait avoir est qu'il peut rendre votre exe/dll légèrement plus grand et plus lent, comme décrit ici:

http://msdn.Microsoft.com/en-us/library/4khtbfyf.aspx

Edit: Comme mentionné par Logan, la liaison incrémentielle est également incompatible avec génération de code temporel de liaison - perdant ainsi une éventuelle optimisation des performances.

Vous souhaiterez peut-être utiliser la liaison incrémentielle pour les versions de débogage pour accélérer le développement, mais désactivez-la pour les versions de version afin d'améliorer les performances d'exécution.

Les DLL chargées avec retard peuvent être ce à quoi vous pensez:

http://msdn.Microsoft.com/en-us/library/151kt790.aspx

114
Saxon Druce

De plus, ce qui est très important, le lien incrémentiel est une condition préalable pour Edit&Continue - possibilité de modifier votre code et de le recompiler à la volée, sans redémarrer.

C'est donc une bonne chose d'avoir des versions de débogage, mais pas de versions de version.

14
Cavaler