Ako všetci vieme, .net programy vygenerujú .dll súborov v adresári bin po ich vygenerovaní, ale odkiaľ pochádza súbor .dll.refresh? V ten deň som googlil nudu a zistil som, že sa to automaticky generuje pri referencii na assembler tretej strany (priamo) vo vašom projekte, tento .refresh súbor ukladá pôvodnú cestu k súboru tretej strany, ak sa dll pod touto cestou aktualizuje, zatiaľ čo pri generovaní projektu sa assembler aktualizuje a mení podľa tejto adresy. Bez tohto súboru nebude VS schopný aktualizovať referencovanú zostavu podľa najnovšieho stavu, čo spôsobí problém nesprávnej verzie zostavy. Malý detail môže spôsobiť veľký problém, všetci dávajte pozor!
Bola vydaná nová verzia webovej stránky a objavil sa vážny problém, keď jedna z knižníc nebola automaticky aktualizovaná, ale automaticky vygenerovaná zastaraná verzia.
Po preskúmaní sa ukázalo, že to súvisí so súborom dll.refresh vo VSS.
Dôvod je jednoduchý:
1。 Počas vývoja, keď sa na webovú stránku pridajú ďalšie externé DLL referencie, systém automaticky vygeneruje obnovovací súbor a tento súbor nebude generovaný, ak sú pod týmto riešením pridané ďalšie DLL referencie na projekty
2。 Obnovovací súbor špecifikuje cestu na automatickú aktualizáciu dll, a ak ide o referenciu knižnice, určí adresár Dubug alebo Release, pričom tentoraz je chybou adresár Debug
3。 Vývojár omylom zaregistroval súbor do kódu VSS
4。 Problém je v tom, že referenčná knižnica sa po vydaní prvej verzie mnohokrát menila, ale rozhranie sa nezmenilo, takže knižnica sa generuje samostatne a potom sa aktualizuje iba zodpovedajúca DLL (Release verzia) všetkých aplikácií, a problém nenastal, ale keď je aplikácia znovu publikovaná, kvôli existencii obnovovacieho súboru v adresári BIN projektu, DLL sa automaticky aktualizuje podľa cesty špecifikovanej súborom, čo vedie k uvoľneniu starej verzie DLL (Debug version).
Riešenie problémov:
Vymaž súbor dll.refresh v aplikácii a znovu ho publikuj
Alebo upraviť obsah v dll.refresh a správne napísať dll cestu
|