Что такое файл dll.refresh в ASP.Net?

В нашем веб-проекте ASP.Net у нас, похоже, есть некоторые файлы .refresh, связанные с некоторыми из сторонних Dll, которые мы используем. Любая идея, что они есть и как/когда они создаются?

Ответ 1

Эти файлы предоставляют путь к рассматриваемой DLL, чтобы сообщить Visual Studio, где его найти (вы можете проверить это, если вы откроете их в текстовом редакторе). Они будут создаваться каждый раз, когда вы добавляете новую ссылку на проект.

Обычно они появляются, когда вы используете тип проекта, который не создает стандартный файл проекта Visual Studio, так как обычно идут пути к связанным с ними DLL файлам.

Ответ 2

Из здесь:

В проекте ASP.NET добавление ссылки на файл добавит файл .refresh в папку Bin. Когда проект находится под контролем источника, этот файл затем добавляется к исходному элементу управления. *.dll.refresh файлы, помещающие каталог bin. Каждый раз, когда вы добавляете внешнюю ссылку, вы найдете файл dll.refresh рядом с ним. Эти файлы dll.refresh являются исключением из правила, и они должны перейти в исходный контроль. Это единственный способ, которым ваш веб-проект будет знать, где живут его ссылки.

Ответ 3

Некоторая информация об обновлении файлов после проб и ошибок. Эти эксперименты были выполнены с помощью Visual Studio 2012. Ссылки были добавлены в веб-проект С# 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 Options исправил эту проблему для меня.

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