Hepimizin bildiği gibi, .net programları oluşturulduktan sonra bin dizininde .dll dosya üretir, peki .dll.refresh dosyası nereden geliyor? O gün sıkıntı aradım ve projenizde üçüncü taraf assembly (doğrudan) referans aldığınızda otomatik olarak oluşturulduğunu öğrendim, bu .refresh dosyası o üçüncü taraf dosyanın orijinal dosya yolunu saklıyor, eğer bu yol altındaki dll güncellenirse, proje oluşturulduğunda ise assembly bu adrese göre güncellenir ve değiştirilir. Bu dosya olmadan, VS referans edilen assembly'yi en son duruma göre güncelleyemez ve bu da assembly sürümünün yanlış olmasına yol açar. Küçük bir detay büyük bir soruna yol açar, herkes dikkat etsin!
Web sitesinin yeni bir sürümü yayımlandı ve kütüphanelerden birinin otomatik güncellenmemesi, ancak eski bir sürümünün otomatik olarak oluşturulması gibi ciddi bir sorun ortaya çıktı.
Araştırmadan sonra, bunun VSS'deki bir dll.refresh dosyasıyla ilgili olduğu ortaya çıktı.
Sebebi basittir:
1。 Geliştirme sürecinde, web sitesine diğer harici DLL referansları eklendiğinde, sistem otomatik olarak yenileme dosyasını oluşturur ve bu çözüm altında başka proje DLL referansları eklenirse bu dosya oluşturulmaz
2。 Refresh dosyası, dll'yi otomatik olarak güncelleme yolunu belirtir ve eğer bir kütüphane referansıysa, Dubug veya Release dizinini belirtir; bu sefer hata yapan dosya Debug dizinidir
3。 Geliştirici yanlışlıkla dosyayı VSS kod tabanına kaydetti
4。 Sorun şu ki, referans kütüphanesi ilk sürüm çıktıktan sonra birçok kez değişmiştir, ancak arayüz değişmemiştir, bu yüzden kütüphane ayrı olarak oluşturulur ve ardından tüm uygulamaların yalnızca ilgili DLL'si (Sürüm sürümü) güncellenir ve herhangi bir sorun yaşanmamıştır; ancak bir uygulama yeniden yayımlandığında, projenin BIN dizininde bir yenileme dosyası bulunduğunda, DLL dosyanın belirttiği yolla otomatik olarak güncellenir ve bu da eski sürüm DLL'nin (Debug sürümü) yayınlanmasına yol açar.
Problem Çözme:
Uygulamadaki dll.refresh dosyasını sil ve uygulamayı yeniden yayınla.
Ya da dll.refresh içindeki içeriği değiştirip dll yolunu doğru yaz
|