Kaip visi žinome, .net programos sugeneruos .dll failus šiukšliadėžės kataloge po to, kai jie bus sugeneruoti, bet iš kur atsiranda failas .dll.refresh? Aš googled nuobodulys tą dieną ir sužinojau, kad tai automatiškai sugeneruojama, kai nuoroda į trečiosios šalies asamblėją (tiesioginis) jūsų projekte, šis .refresh failas saugo originalų failo kelią, kad trečiosios šalies failas, jei dll pagal šį kelią yra atnaujintas, vs, kai projektas yra sugeneruotas, asamblėja bus atnaujinta ir pakeista pagal šį adresą. Be šio failo VS negalės atnaujinti nurodyto rinkinio pagal naujausią būseną, todėl surinkimo versija bus neteisinga. Maža detalė sukels didelę problemą, visi atkreipia dėmesį!
Buvo išleista nauja svetainės versija ir aptikta rimta problema, kai viena iš bibliotekų nebuvo automatiškai atnaujinta, bet automatiškai sugeneruota pasenusi versija.
Po tyrimo paaiškėjo, kad jis susijęs su dll.refresh failu VSS.
Priežastis paprasta:
1。 Kūrimo proceso metu, kai į svetainę įtraukiamos kitos išorinės DLL nuorodos, sistema automatiškai sugeneruoja atnaujinimo failą ir šis failas nebus generuojamas, jei pagal šį sprendimą bus įtrauktos kitos projekto DLL nuorodos
2。 Atnaujinimo failas nurodo automatinio dll atnaujinimo kelią, o jei tai yra bibliotekos nuoroda, jis nurodys katalogą Dubug arba Release, o failas, kuris šį kartą yra klaidingas, yra Debug katalogas
3。 Kūrėjas per klaidą patikrino failą VSS kodų bazėje
4。 Problema ta, kad išleidus pirmąją versiją, nuorodų biblioteka daug kartų keitėsi, tačiau sąsaja nepasikeitė, todėl biblioteka generuojama atskirai, o tada atnaujinama tik atitinkama visų programų DLL (leidimo versija), ir problemų nebuvo, tačiau pakartotinai paskelbus programą, dėl to, kad projekto BIN kataloge yra atnaujinimo failas, DLL automatiškai atnaujinamas failo nurodytu keliu, dėl kurio išleidžiama senoji versija DLL (Debug versija).
Problemų sprendimas:
Panaikinkite dll.refresh failą programoje ir iš naujo publikuokite programą
Arba pakeiskite turinį dll.refresh ir teisingai parašykite dll kelią
|