Kuten kaikki tiedämme, .net-ohjelmat tuottavat .dll tiedostoja bin-hakemistossa niiden luomisen jälkeen, mutta mistä tiedosto .dll.refresh tulee? Googlasin tylsyyttä sinä päivänä ja huomasin, että tämä generoidaan automaattisesti, kun viitataan kolmannen osapuolen assemblyyn (suoraan) projektissasi, tämä .refresh -tiedosto tallentaa kyseisen kolmannen osapuolen tiedoston alkuperäisen tiedostopolun, jos tämän polun alla oleva dll päivitetään, verrattuna projektin generointiin, assembleri päivittyy ja muutetaan tämän osoitteen mukaan. Ilman tätä tiedostoa VS ei pysty päivittämään viitattua assemblyä viimeisimmän tilan mukaan, mikä aiheuttaa ongelman, että assembler-versio on virheellinen. Pieni yksityiskohta johtaa isoon ongelmaan, kaikki kiinnittäkää huomiota!
Verkkosivustosta julkaistiin uusi versio, ja vakava ongelma havaittiin, jossa yksi kirjastoista ei päivittynyt automaattisesti, vaan vanhentunut versio luotiin automaattisesti.
Tutkimuksen jälkeen selvisi, että se liittyi VSS:n dll.refresh-tiedostoon.
Syy on yksinkertainen:
1。 Kehitysprosessin aikana, kun verkkosivustolle lisätään muita ulkoisia DLL-viittauksia, järjestelmä generoi automaattisesti päivitystiedoston, eikä tätä tiedostoa luoda, jos tähän ratkaisuun lisätään muita projektin DLL-viittauksia
2。 Refresh-tiedosto määrittää polun, jolla dll päivitetään automaattisesti, ja jos kyseessä on kirjaston viite, se määrittää Dubug- tai Release-hakemiston, ja tällä kertaa virheen saanut tiedosto on Debug-hakemisto
3。 Kehittäjä tarkisti tiedoston vahingossa VSS-koodipohjaan
4。 Ongelma on, että viitekirjasto on muuttunut monta kertaa ensimmäisen version julkaisun jälkeen, mutta rajapinta ei ole muuttunut, joten kirjasto luodaan erikseen, ja silloin päivitetään vain vastaava DLL (Release version) kaikista sovelluksista, eikä ongelmia ole ollut, mutta kun sovellus julkaistaan uudelleen, koska BIN-hakemistossa on päivitystiedosto, DLL päivittyy automaattisesti tiedoston määrittelemällä polulla, mikä johtaa vanhan version DLL:n (Debug-version) julkaisuun.
Ongelmanratkaisu:
Poista dll.refresh-tiedosto sovelluksesta ja julkaise sovellus uudelleen
Tai muokata sisältöä dll.refreshissä ja kirjoittaa dll-polku oikein
|