2012-07-03 13 views
5

Son zamanlarda, bir dosyayı yeniden adlandırarak ve daha sonra kopyayı gerçekleştirerek kullanılan bir derlemenin kopyalanabileceğini keşfettim. ÖRNEĞİN.Bir montajı yeniden adlandırmak ve kopyalamak güvenli midir?

C: \ Klasör \ MyLibrary.dll
=> C adlandırmak: \ Klasör \ MyLibrary.dll_old
=> Yeni sürüm C kopyalayın: \ Klasör \ MyLibrary.dll (v2.0)

Bir sonraki uygulama başladığında, bu yeni montajı yükleyeceği söylendi. Ve uygulama çalışmaya devam ederken, eski meclisi kullanmaya devam edecektir (_old olarak adlandırılmış olsa bile).

Bana bir kesmek gibi görünüyor. Montajları bu şekilde güncellemek güvenli midir?

+1

"Hack" çok uygun bir terimdir :) "Garip s ** t" ve "Kötülük Craziness" de akla gelir :) – paulsm4

+8

"Hot Deploy" olarak adlandırılır - bkz. Http://stackoverflow.com/questions/ 2335755/nasıl yapılır-güncelleştirme-bir-montaj-için-c-keskin-işlem-aka-hot-deploy – dash

+0

Birçok eklenti yaklaşımları bunu destekler. Windows 'hizmetleri için https://github.com/Topshelf/Topshelf/ bunu desteklemektedir. – kenny

cevap

3

Bu güvenlidir. Eski derleme yüklenmediği sürece, aynı uygulama alanı onu tekrar yüklemeye çalışmaz. Uygulamanın devam etmesi için dosya adı önemli değildir. Bununla birlikte, üretimde, muhtemelen 3+ eşzamanlı sürümleri ve kullanılmayan dosyaları en sonunda çıkaracak bir mekanizmayı düşünmeniz gerekecektir.

+0

"3+ eşzamanlı sürüm var mı?" Ile ne kastettiğinizi açıklayabilir misiniz? –

+0

@ P.Brian.Mackey - '_old' soneki eklemek yeterli olmayabilir. Sonekler dinamik olmalıdır. Sürüm 2, sürüm 2'ye göre sürüm 3'ü dağıtmaya karar verdiğinizde ve sürüm 2'nin yeniden adlandırılması başarısız olduğunda, Sürüm 1 hala çalışıyor olabilir. Öte yandan, kullanılmayan DLL'lerin temizlenmesi için otomatik mekanizmanız güvenilmezse, dinamik ekler daha fazla zarar verecektir. –

İlgili konular