Kā mēs visi zinām, .net programmas ģenerēs .dll failus bin direktorijā pēc to ģenerēšanas, bet no kurienes nāk fails .dll.refresh? Tajā dienā es googlēju garlaicību un uzzināju, ka tas tiek automātiski ģenerēts, atsaucoties uz trešās puses asambleju (tiešo) jūsu projektā, šis .refresh fails saglabā šī trešās puses faila sākotnējo faila ceļu, ja dll zem šī ceļa tiek atjaunināts, salīdzinot ar projekta ģenerēšanu, montāža tiks atjaunināta un mainīta atbilstoši šai adresei. Bez šī faila VS nevarēs atjaunināt atsaucēto montāžu atbilstoši jaunākajam statusam, kas radīs problēmu, ka montāžas versija ir nepareiza. Neliela detaļa novedīs pie lielas problēmas, visi pievērš uzmanību!
Tika izlaista jauna vietnes versija, un tika atklāta nopietna problēma, kad viena no bibliotēkām netika automātiski atjaunināta, bet automātiski tika ģenerēta novecojusi versija.
Pēc izmeklēšanas izrādījās, ka tas ir saistīts ar dll.refresh failu VSS.
Iemesls ir vienkāršs:
1。 Izstrādes procesa laikā, kad tīmekļa vietnei tiek pievienotas citas ārējās DLL atsauces, sistēma automātiski ģenerē atsvaidzināšanas failu, un šis fails netiks ģenerēts, ja šajā risinājumā tiek pievienotas citas projekta DLL atsauces
2。 Atsvaidzināšanas fails norāda ceļu, lai automātiski atjauninātu dll, un, ja tā ir bibliotēkas atsauce, tas norāda direktoriju Dubug vai Release, un fails, kas šoreiz ir kļūdains, ir atkļūdošanas direktorijs
3。 Izstrādātājs kļūdaini pārbaudīja failu VSS kodu bāzē
4。 Problēma ir tāda, ka atsauces bibliotēka ir mainījusies daudzas reizes pēc pirmās versijas izlaišanas, bet saskarne nav mainījusies, tāpēc bibliotēka tiek ģenerēta atsevišķi, un pēc tam tiek atjaunināta tikai atbilstošā visu lietojumprogrammu DLL (izlaiduma versija), un nav bijušas problēmas, bet, kad lietojumprogramma tiek pārpublicēta, sakarā ar atsvaidzināšanas failu projekta BIN direktorijā, DLL tiek automātiski atjaunināts ar faila norādīto ceļu, kas noved pie vecās versijas DLL (atkļūdošanas versijas) izlaišanas.
Problēmu risināšana:
Izdzēsiet dll.refresh failu programmā un atkārtoti publicējiet programmu
Vai arī modificējiet saturu dll.refresh un pareizi ierakstiet dll ceļu
|