Aracılığıyla paylaş


Gölge Kopyalama Derlemeleri

Not

Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.

Gölge kopyalama, bir uygulama etki alanında kullanılan derlemelerin uygulama etki alanı kaldırılmadan güncelleştirilmeye olanak tanır. Bu, özellikle ASP.NET siteleri gibi sürekli kullanılabilir olması gereken uygulamalar için kullanışlıdır.

Önemli

Windows 8.x Store uygulamalarında gölge kopyalama desteklenmez.

Ortak dil çalışma zamanı, derleme yüklendiğinde bir derleme dosyasını kilitler, bu nedenle derleme kaldırılana kadar dosya güncelleştirilemez. Bir derlemeyi uygulama etki alanından kaldırmanın tek yolu uygulama etki alanını kaldırmaktır, bu nedenle normal koşullarda, onu kullanan tüm uygulama etki alanları kaldırılana kadar derleme diskte güncelleştirilemez.

Bir uygulama etki alanı gölge kopya dosyalarına yapılandırıldığında, uygulama yolundaki derlemeler başka bir konuma kopyalanır ve bu konumdan yüklenir. Kopya kilitlenir, ancak özgün derleme dosyasının kilidi açılır ve güncelleştirilebilir.

Önemli

Gölge kopyalanabilen tek derlemeler, uygulama etki alanı yapılandırıldığında ve PrivateBinPath özellikleri tarafından ApplicationBase belirtilen uygulama dizininde veya alt dizinlerinde depolanan derlemelerdir. Genel derleme önbelleğinde depolanan derlemeler gölge kopyalanmaz.

Bu makale aşağıdaki bölümleri içerir:

  • Gölge Kopyalamayı Etkinleştirme ve Kullanma, temel kullanımı ve gölge kopyalama için kullanılabilen seçenekleri açıklar.

  • Başlangıç Performansı , başlangıç performansını geliştirmek için .NET Framework 4'te gölge kopyalamada yapılan değişiklikleri ve önceki sürümlerin davranışına nasıl geri dönüldüğünü açıklar.

  • Eski Yöntemler , .NET Framework 2.0'da gölge kopyalamayı denetleyen özelliklerde ve yöntemlerde yapılan değişiklikleri açıklar.

Gölge Kopyalamayı Etkinleştirme ve Kullanma

Bir uygulama etki alanını gölge kopyalama için yapılandırmak için sınıfın AppDomainSetup özelliklerini aşağıdaki gibi kullanabilirsiniz:

  • özelliğini dize değerine "true"ayarlayarak ShadowCopyFiles gölge kopyalamayı etkinleştirin.

    Varsayılan olarak, bu ayar uygulama yolundaki tüm derlemelerin yüklenmeden önce bir indirme önbelleğine kopyalanmasına neden olur. Bu, diğer bilgisayarlardan indirilen dosyaları depolamak için ortak dil çalışma zamanı tarafından tutulan önbellekle aynıdır ve ortak dil çalışma zamanı artık gerekli olmadığında dosyaları otomatik olarak siler.

  • İsteğe bağlı olarak, özelliğini ve ApplicationName özelliğini kullanarak CachePath gölge kopyalanan dosyalar için özel bir konum ayarlayın.

    Konumun temel yolu, özelliğin bir alt dizin olarak özelliğiyle CachePath birleştirilmesiyle ApplicationName oluşturulur. Derlemeler, temel yolun kendisine değil, bu yolun alt dizinlerine gölge kopyalanır.

    Not

    ApplicationName Özellik ayarlanmazsa özellik CachePath yoksayılır ve indirme önbelleği kullanılır. Özel durum oluşturulmaz.

    Özel bir konum belirtirseniz, artık gerekli olmadığında dizinleri ve kopyalanan dosyaları temizlemek sizin sorumluluğunuzdadır. Bunlar otomatik olarak silinmez.

    Gölge kopyalanan dosyalar için özel bir konum ayarlamak istemenin birkaç nedeni vardır. Uygulamanız çok sayıda kopya oluşturuyorsa, gölge kopyalanan dosyalar için özel bir konum ayarlamak isteyebilirsiniz. İndirme önbelleği yaşam süresine göre değil boyuta göre sınırlıdır, bu nedenle ortak dil çalışma zamanının hala kullanımda olan bir dosyayı silmeyi denemesi mümkündür. Özel konum ayarlamanın bir diğer nedeni de uygulamanızı çalıştıran kullanıcıların indirme önbelleği için ortak dil çalışma zamanının kullandığı dizin konumuna yazma erişimi olmamasıdır.

  • İsteğe bağlı olarak özelliğini kullanarak gölge kopyalanan derlemeleri sınırlayın ShadowCopyDirectories .

    Bir uygulama etki alanı için gölge kopyalamayı etkinleştirdiğinizde, varsayılan değer uygulama yolundaki tüm derlemeleri ( ve PrivateBinPath özellikleri tarafından ApplicationBase belirtilen dizinlerde) kopyalamaktır. Yalnızca gölge kopyalamak istediğiniz dizinleri içeren bir dize oluşturup dizeyi özelliğine atayarak, kopyalamayı seçili dizinlerle ShadowCopyDirectories sınırlayabilirsiniz. Dizinleri noktalı virgülle ayırın. Gölge kopyalanan tek derlemeler, seçili dizinlerdeki derlemelerdir.

    Not

    Özelliğine ShadowCopyDirectories bir dize atamazsanız veya bu özelliği olarak nullayarlarsanız ve PrivateBinPath özellikleri tarafından ApplicationBase belirtilen dizinlerdeki tüm derlemeler gölge kopyalanır.

    Önemli

    Noktalı virgül sınırlayıcı karakteri olduğundan dizin yolları noktalı virgül içermemelidir. Noktalı virgüller için kaçış karakteri yoktur.

Başlangıç Performansı

Gölge kopyalama kullanan bir uygulama etki alanı başlatıldığında, uygulama dizinindeki derlemeler gölge kopya dizinine kopyalanırken veya zaten bu konumda olup olmadığı doğrulanırken bir gecikme olur. .NET Framework 4'ün öncesinde, tüm derlemeler geçici bir dizine kopyalandı. Her derleme, derleme adını doğrulamak için açıldı ve tanımlayıcı ad doğrulandı. Her derleme, gölge kopya dizinindeki kopyadan daha yakın zamanda güncelleştirilip güncelleştirilmediğini görmek için denetlendi. Öyleyse, gölge kopya dizinine kopyalanmıştır. Son olarak, geçici kopyalar atılır.

.NET Framework 4'le başlayarak varsayılan başlatma davranışı, uygulama dizinindeki her derlemenin dosya tarihini ve saatini gölge kopya dizinindeki kopyanın dosya tarihi ve saatiyle doğrudan karşılaştırmaktır. Derleme güncelleştirildiyse, .NET Framework'ün önceki sürümlerinde olduğu gibi aynı yordam kullanılarak kopyalanır; aksi takdirde, gölge kopya dizinindeki kopya yüklenir.

Elde edilen performans iyileştirmesi, derlemelerin sık değişmediği ve değişikliklerin genellikle derlemelerin küçük bir alt kümesinde gerçekleştiği uygulamalar için en büyüktür. Bir uygulamadaki derlemelerin çoğu sık değişiyorsa, yeni varsayılan davranış performans regresyonuna neden olabilir. ile enabled="false"yapılandırma dosyasına shadowCopyVerifyByTimestamp> öğesini ekleyerek <.NET Framework'ün önceki sürümlerinin başlatma davranışını geri yükleyebilirsiniz.

Eski Yöntemler

sınıfı, AppDomain bir uygulama etki alanında gölge kopyalamayı denetlemek için kullanılabilecek ve ClearShadowCopyPathgibi SetShadowCopyFiles çeşitli yöntemlere sahiptir, ancak bunlar .NET Framework sürüm 2.0'da kullanım dışı olarak işaretlenmiştir. Bir uygulama etki alanını gölge kopyalama için yapılandırmanın önerilen yolu, sınıfın AppDomainSetup özelliklerini kullanmaktır.

Ayrıca bkz.