Както всички знаем, .net програмите ще генерират .dll файла в bin директорията след като са генерирани, но откъде идва файлът .dll.refresh? Потърсих в Google boedom онзи ден и разбрах, че това се генерира автоматично, когато се позоваваш на трета странна асемблер (директна) в проекта си, този .refresh файл съхранява оригиналния път на файла на трета страна, ако dll под този път се обнови, вместо когато проектът е генериран, асемблерът ще бъде обновен и променен според този адрес. Без този файл VS няма да може да актуализира реферираната асемблерна система според последния статус, което ще доведе до проблема с неправилната асемблерна версия. Малък детайл ще доведе до голям проблем, всички обърнете внимание!
Беше пусната нова версия на уебсайта и беше открит сериозен проблем, при който една от библиотеките не се обновяваше автоматично, а остаряла версия се генерираше автоматично.
След разследване се оказа, че е свързан с dll.refresh файл във VSS.
Причината е проста:
1。 По време на процеса на разработка, когато към уебсайта се добавят други външни DLL препратки, системата автоматично генерира файла за обновяване, който няма да бъде генериран, ако се добавят други препратки към DLL към проекта чрез това решение
2。 Файлът за обновяване определя пътя за автоматично обновяване на dll, и ако е библиотечна препратка, ще посочи директорията Dubug или Release, а този път файлът, който има грешка, е директорията Debug
3。 Разработчикът по погрешка е проверил файла в кодовата база на VSS
4。 Проблемът е, че референтната библиотека се е променяла многократно след пускането на първата версия, но интерфейсът не се е променил, така че библиотеката се генерира отделно, а след това се обновява само съответната DLL (версия на Release) на всички приложения, и няма проблем, но когато дадено приложение бъде препубликувано, поради наличието на файл за опресняване в директорията BIN на проекта, DLL автоматично се обновява с пътя, зададен от файла, което води до пускането на старата версия DLL (Debug версия).
Решаване на проблеми:
Изтрий файла dll.refresh в приложението и публикувай приложението отново
Или да модифицирам съдържанието в dll.refresh и да напишем правилния път на dll
|