Как всем известно, .net-программы генерируют .dll файлов в каталоге Bin после их генерации, но откуда берётся файл .dll.refresh? В тот день я загуглил buedom и выяснил, что это автоматически генерируется при ссылке на сторонний ассемблер (прямой) в вашем проекте, этот .refresh файл хранит исходный путь этого стороннего файла, если dll по этому пути обновлён, а не при генерации проекта, ассемблер будет обновлен и изменён по этому адресу. Без этого файла VS не сможет обновить ссылку на ассемблер по последнему статусу, что приведёт к некорректности версии ассемблера. Маленькая деталь приведёт к большой проблеме, внимание!
Была выпущена новая версия сайта, и была обнаружена серьёзная проблема: одна из библиотек не обновлялась автоматически, а устаревшая версия генерировалась автоматически.
После расследования выяснилось, что это связано с файлом dll.refresh в VSS.
Причина проста:
1。 В процессе разработки, когда на сайт добавляются другие внешние ссылки на DLL, система автоматически генерирует файл обновления, и этот файл не будет генерироваться, если в рамках этого решения добавляются другие ссылки на DLL проекта
2。 Файл обновления указывает путь для автоматического обновления dll, и если это ссылка на библиотеку, он укажет каталог Dubug или Release, а на этот раз ошибка будет каталогом Debug
3。 Разработчик ошибочно ввёл файл в кодовую базу VSS
4。 Проблема в том, что справочная библиотека менялась много раз после выхода первой версии, но интерфейс не менялся, поэтому библиотека генерируется отдельно, и обновляется только соответствующая DLL (версия выпуска) всех приложений, и проблем не возникало, но при повторной публикации приложения из-за наличия файла обновления в каталоге BIN проекта DLL автоматически обновляется по пути, указанному файлом, что приводит к выпуску старой версии DLL (Debug version).
Решение проблем:
Удалите файл dll.refresh из приложения и опубликуйте приложение заново
Или измените содержимое в dll.refresh и правильно запишите путь к dll
|