Некоторая информация о файлах обновления после проб и ошибок. Эти эксперименты проводились с Visual Studio 2012. Ссылки были добавлены в веб-проект C # asp.net.
Как уже говорилось, добавление ссылки на сборку посредством просмотра добавляет файл .refresh. Однако, если есть дополнительные зависимые библиотеки DLL в явно добавленной библиотеке DLL в каталоге, из которого вы добавляете, зависимые также добавляются неявно, но без файлов .refresh! Так, например, я добавляю ссылку на «MyAssembly.dll», я получу также «MyAssembly.dll.refresh». Но если существует сборка «MyDependentAssembly.dll», от которой зависит «MyAssembly.dll», я не получу «MyDependentAssembly.dll.refresh». Так что получается, что обновляется одна сборка, но не ее зависимые! Вы должны добавлять библиотеки DLL по одному в обратном порядке зависимости, и тогда все будет работать лучше.
Некоторые другие вещи, которые нужно соблюдать осторожность.
Добавление «MyAssembly.dll» также добавит «MyAssembly.pdb», если он присутствует. Также «MyAssembly.xml» будет добавлен к ссылкам, если он присутствует. Эти два файла тоже обновятся, когда появится «MyAssembly.dll.refresh».
Но когда Visual Studio решает искать файлы обновления? Теперь запомните, что в веб-проекте файл проекта не отслеживает ссылки DLL, на которые есть ссылки. Вы не найдете библиотеки DLL, перечисленные в файле проекта, только зависимости проекта. Так когда же происходит обновление?
Ответ, когда происходит обновление, происходит во время сборки, когда указанная сборка должна быть загружена. Это означает, что хотя построение готового обновляемого веб-сайта может не захватить все библиотеки DLL. У меня была DLL, которая не обновлялась, а потом я понял, что она используется только внутри файла .ascx. Снятие флажка «Разрешить обновление предварительно скомпилированного сайта» на странице проекта параметров MSBuild устранило эту проблему для меня.
Тем не менее, если вы добавите ссылочные библиотеки DLL, которые загружаются с помощью отражения в ваш код, они не будут обновляться с помощью ссылки. Вам нужно будет использовать события сборки, чтобы скопировать их в каталог bin.