Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.
Penyalinan bayangan memungkinkan rakitan yang digunakan dalam domain aplikasi untuk diperbarui tanpa membongkar domain aplikasi. Ini sangat berguna untuk aplikasi yang harus tersedia terus menerus, seperti situs ASP.NET.
Penting
Penyalinan bayangan tidak didukung di aplikasi Windows 8.x Store.
Runtime bahasa umum mengunci file assembly saat assembly dimuat, sehingga file tidak dapat diperbarui hingga assembly dibongkar. Satu-satunya cara untuk memuat keluar komponen dari domain aplikasi adalah dengan memuat keluar domain aplikasi, jadi dalam keadaan normal, komponen tidak dapat diperbarui di disk sampai semua domain aplikasi yang menggunakannya telah dimuat keluar.
Ketika domain aplikasi dikonfigurasi ke file salinan bayangan, rakitan dari jalur aplikasi disalin ke lokasi lain dan dimuat dari lokasi tersebut. Salinan dikunci, tetapi file rakitan asli tidak terkunci dan dapat diperbarui.
Penting
Satu-satunya assembly yang dapat disalin bayangan adalah yang disimpan di direktori aplikasi atau subdirektorinya, ditentukan oleh properti ApplicationBase dan PrivateBinPath ketika domain aplikasi dikonfigurasi. Rakitan yang disimpan dalam cache rakitan global tidak mengalami pencadangan bayangan.
Artikel ini berisi bagian berikut:
Mengaktifkan dan Menggunakan Penyalinan Bayangan menjelaskan penggunaan dasar dan opsi yang tersedia untuk penyalinan bayangan.
Performa Startup menjelaskan perubahan yang dilakukan pada penyalinan bayangan di .NET Framework 4 untuk meningkatkan performa startup, dan cara kembali ke perilaku versi sebelumnya.
Metode Usang menjelaskan perubahan yang dilakukan pada properti dan metode yang mengontrol penyalinan bayangan di .NET Framework 2.0.
Mengaktifkan dan Menggunakan Penyalinan Bayangan
Anda dapat menggunakan properti AppDomainSetup kelas sebagai berikut untuk mengonfigurasi domain aplikasi untuk penyalinan bayangan:
Aktifkan penyalinan ShadowCopyFiles bayangan dengan mengatur properti ke nilai
"true"string .Secara default, pengaturan ini menyebabkan semua rakitan di jalur aplikasi disalin ke cache unduhan sebelum dimuat. Ini adalah cache yang sama yang dikelola oleh runtime bahasa umum untuk menyimpan file yang diunduh dari komputer lain, dan runtime bahasa umum secara otomatis menghapus file ketika tidak lagi diperlukan.
Secara opsional atur lokasi kustom untuk file yang disalin bayangan dengan menggunakan CachePath properti dan ApplicationName properti .
Jalur dasar untuk lokasi dibentuk dengan menggabungkan ApplicationName properti ke CachePath properti sebagai subdirektori. Majelis disalin sementara ke subdirektori dari jalur ini, bukan ke jalur dasar itu sendiri.
Nota
Jika properti ApplicationName tidak disetel, properti CachePath diabaikan dan cache unduhan digunakan. Tidak ada pengecualian yang dilemparkan.
Jika Anda menentukan lokasi kustom, Anda bertanggung jawab untuk membersihkan direktori dan menyalin file ketika tidak lagi diperlukan. Mereka tidak dihapus secara otomatis.
Ada beberapa alasan mengapa Anda mungkin ingin mengatur lokasi kustom untuk file yang disalin bayangan. Anda mungkin ingin mengatur lokasi kustom untuk file yang memiliki salinan bayangan jika aplikasi Anda memproduksi banyak salinan. Cache unduhan dibatasi oleh ukuran, bukan seumur hidup, sehingga ada kemungkinan runtime bahasa umum akan mencoba menghapus file yang masih digunakan. Alasan lain untuk mengatur lokasi kustom adalah ketika pengguna yang menjalankan aplikasi Anda tidak memiliki akses tulis ke lokasi direktori yang digunakan runtime bahasa umum untuk cache unduhan.
Batasi secara opsional rakitan yang disalin secara bayangan dengan menggunakan properti ShadowCopyDirectories.
Saat Anda mengaktifkan penyalinan bayangan untuk domain aplikasi, defaultnya adalah menyalin semua assembly di jalur aplikasi — yaitu, dalam direktori yang ditentukan oleh properti ApplicationBase dan PrivateBinPath. Anda dapat membatasi penyalinan ke direktori yang dipilih dengan membuat string yang hanya berisi direktori yang ingin Anda salin bayangannya, dan menetapkan string ke ShadowCopyDirectories properti . Pisahkan direktori dengan titik koma. Satu-satunya komponen yang diduplikasi secara bayangan adalah yang berada di direktori yang dipilih.
Nota
Jika Anda tidak menetapkan string ke properti ShadowCopyDirectories, atau jika Anda mengatur properti ini ke
null, semua assembly dalam direktori yang ditentukan oleh properti ApplicationBase dan PrivateBinPath dibuat salinan bayangannya.Penting
Jalur direktori tidak boleh berisi titik koma, karena titik koma adalah karakter pemisah. Tidak ada karakter escape untuk titik koma.
Kinerja Perusahaan Rintisan
Ketika domain aplikasi yang menggunakan penyalinan bayangan dimulai, ada penundaan sementara komponen perangkat lunak di direktori aplikasi disalin ke direktori salinan bayangan, atau diverifikasi jika sudah ada di lokasi tersebut. Sebelum .NET Framework 4, semua rakitan disalin ke direktori sementara. Setiap kumpulan dibuka untuk memverifikasi nama kumpulan, dan nama yang kuat divalidasi. Setiap susunan diperiksa untuk memastikan apakah sudah diperbarui lebih baru daripada salinan di direktori salinan bayangan. Jika demikian, itu dipindahkan ke direktori salinan bayangan. Akhirnya, salinan sementara dibuang.
Dimulai dengan .NET Framework 4, perilaku startup bawaan adalah membandingkan secara langsung tanggal dan waktu file setiap assembly di direktori aplikasi dengan tanggal dan waktu file salinan di direktori salinan bayangan. Jika rakitan telah diperbarui, rakitan disalin dengan menggunakan prosedur yang sama seperti pada versi .NET Framework sebelumnya; jika tidak, salinan dalam direktori salinan bayangan dimuat.
Peningkatan performa yang dihasilkan adalah yang terbesar untuk aplikasi di mana rakitan tidak sering berubah dan perubahan biasanya terjadi dalam subset kecil rakitan. Jika sebagian besar rakitan dalam aplikasi sering berubah, perilaku default baru dapat menyebabkan regresi performa. Anda dapat memulihkan perilaku startup dari versi .NET Framework sebelumnya dengan menambahkan <shadowCopyVerifyByTimestamp> elemen ke file konfigurasi, dengan enabled="false".
Metode Usang
Kelas AppDomain ini memiliki beberapa metode, seperti SetShadowCopyFiles dan ClearShadowCopyPath, yang dapat digunakan untuk mengontrol penyalinan bayangan pada domain aplikasi, tetapi ini telah ditandai usang dalam .NET Framework versi 2.0. Cara yang disarankan untuk mengonfigurasi domain aplikasi untuk salinan bayangan adalah dengan menggunakan properti kelas AppDomainSetup.