Zoals we allemaal weten, genereren .net-programma's .dll bestanden in de bin-map nadat ze zijn gegenereerd, maar waar komt het bestand .dll.refresh vandaan? Ik heb die dag op verveling gegoogeld en ontdekt dat dit automatisch wordt gegenereerd bij het refereren naar een derde partij assembly (direct) in je project; dit .refresh-bestand slaat het oorspronkelijke bestandspad van dat derde partij op; als de dll onder dit pad wordt bijgewerkt, wordt de assembly bijgewerkt en aangepast volgens dit adres, terwijl het project wordt gegenereerd. Zonder dit bestand kan VS de gerefereerde assembly niet bijwerken volgens de laatste status, wat het probleem veroorzaakt dat de assemblyversie onjuist is. Een klein detail leidt tot een groot probleem, iedereen let op!
Er werd een nieuwe versie van de website uitgebracht en er werd een ernstig probleem ontdekt waarbij een van de bibliotheken niet automatisch werd bijgewerkt, maar een verouderde versie automatisch werd gegenereerd.
Na onderzoek bleek het te maken te hebben met een dll.refresh-bestand in VSS.
De reden is simpel:
1。 Tijdens het ontwikkelproces, wanneer andere externe DLL-referenties aan de website worden toegevoegd, genereert het systeem automatisch het verversbestand, en dit bestand wordt niet gegenereerd als andere project-DLL-referenties onder deze oplossing worden toegevoegd
2。 Het refresh-bestand specificeert het pad om de dll automatisch bij te werken, en als het een bibliotheekreferentie is, zal het de Dubug- of Release-map vermelden, en het bestand dat deze keer een fout krijgt is de Debug-map
3。 De ontwikkelaar heeft per ongeluk het bestand in de VSS-codebase gecheckt
4。 Het probleem is dat de referentiebibliotheek vele malen is veranderd na de release van de eerste versie, maar de interface is niet veranderd, dus wordt de bibliotheek apart gegenereerd en dan wordt alleen de overeenkomstige DLL (Release version) van alle applicaties bijgewerkt, en er is geen probleem geweest, maar wanneer een applicatie opnieuw wordt gepubliceerd, wordt de DLL automatisch bijgewerkt met het pad dat door het bestand is gespecificeerd vanwege het bestaan van een refresh-bestand in de BIN-map van het project, wat leidt tot de release van de oude versie van de DLL (Debug-versie).
Probleemoplossing:
Verwijder het dll.refresh-bestand in de app en publiceer de app opnieuw
Of pas de inhoud aan in dll.refresh en schrijf het dll-pad correct
|