Что такое "инкрементная привязка"?

Я посмотрел Microsoft MSDN и все вокруг Интернета, но я до сих пор не смог получить действительно хорошее представление о том, что это такое.

Означает ли это, что заполненная программа загружает библиотеки DLL в разное время во время ее выполнения, как это было со всеми сразу после запуска?

Я полностью ушел?:)

Ответ 1

Связывание включает в себя объединение всех файлов .obj, созданных из ваших исходных файлов, а также любых .lib файлов, которые вы ссылаетесь, на ваш вывод (например,.exe или .dll).

Без инкрементной привязки это нужно делать с нуля каждый раз.

Инкрементное связывание связывает ваш exe/dll таким образом, который облегчает компоновщику обновление существующей exe/dll при внесении небольшого изменения и повторной компиляции.

Таким образом, инкрементная привязка просто ускоряет компиляцию и привязку вашего проекта.

Единственный эффект выполнения, который может иметь это, заключается в том, что он может сделать ваш exe/dll немного больше и медленнее, как описано здесь:

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

Изменить: как упоминалось в Logan, инкрементная привязка также несовместима с генерация кода времени передачи - поэтому можно потерять возможную оптимизацию производительности.

Возможно, вы захотите использовать инкрементную привязку для отладочных сборников для ускорения разработки, но отключите ее для сборки релизов, чтобы повысить производительность выполнения.

Задержки, загруженные DLL, могут быть тем, о чем вы думаете:

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

Ответ 2

Кроме того, что немаловажно, инкрементная ссылка является предварительным условием для Edit&Continue - возможно, отредактируйте свой код и перекомпилируйте его на лету без перезапуска.

Так что неплохо иметь отладочные сборки, но не выпускать сборки.