Kot vsi vemo, .net programi po generiranju ustvarijo .dll datotek v mapi bin, vendar od kod prihaja datoteka .dll.refresh? Tisti dan sem poguglal 'Boreded' in ugotovil, da se to samodejno generira, ko se sklicuješ na asembler tretje osebe (direktno) v projektu, ta .refresh datoteka shrani izvirno pot datoteke te tretje osebe, če je dll pod to potjo posodobljen, medtem ko se projekt generira, bo asembler posodobljen in spremenjen glede na ta naslov. Brez te datoteke VS ne bo mogel posodobiti referenciranega asemblerja glede na najnovejši status, kar bo povzročilo težavo z napačno različico asemblerja. Majhna podrobnost bo povzročila velik problem, vsi bodite pozorni!
Izdana je bila nova različica spletne strani in odkrita je bila resna težava, kjer ena od knjižnic ni bila samodejno posodobljena, ampak je bila samodejno ustvarjena zastarela različica.
Po preiskavi se je izkazalo, da je povezano z datoteko dll.refresh v VSS.
Razlog je preprost:
1。 Med razvojnim procesom, ko se na spletno stran dodajo druge zunanje DLL reference, sistem samodejno ustvari osveževalno datoteko, ki ne bo ustvarjena, če so pod to rešitev dodane druge DLL reference projektov
2。 Osveževalna datoteka določa pot za samodejno posodobitev dll, in če gre za knjižnično referenco, bo določila mapo Dubug ali Release, datoteka, ki je tokrat napaka, pa je mapa Debug
3。 Razvijalec je pomotoma vnesel datoteko v VSS kodo
4。 Težava je v tem, da se je referenčna knjižnica po izidu prve različice večkrat spremenila, vendar se vmesnik ni spremenil, zato se knjižnica ustvari ločeno, nato pa se posodobi le ustrezna DLL (izdaja) vseh aplikacij, in ni bilo težav, vendar se ob ponovni objavi aplikacije zaradi obstoja osveževalne datoteke v mapi BIN projekta DLL samodejno posodobi s potjo, ki jo določi datoteka, kar vodi do izdaje stare različice DLL (Debug version).
Reševanje problemov:
Izbriši datoteko dll.refresh v aplikaciji in jo ponovno objavi
Ali pa spremenite vsebino v dll.refresh in pravilno napišite pot dll
|