Cara meng-upgrade atau penurunan rakitan yang telah rakitan direferensikan untuk objek CLR dalam contoh SQL Server 2005

Bug #: 490 (SQL Hotfix)

Ringkasan

Ketika Anda mencoba untuk meng-upgrade atau penurunan rakitan untuk objek runtime (CLR) bahasa umum dalam contoh Microsoft SQL Server 2005, Anda tidak dapat mengubah versi rakitan direferensikan metadata Majelis. Selain itu, jika Anda menggunakan rakitan bernama kuat untuk objek CLR, Anda tidak dapat menurunkan perakitan menggunakan pernyataan rakitan ALTER.

PENDAHULUAN

Artikel ini menjelaskan cara meng-upgrade atau penurunan rakitan yang telah rakitan direferensikan untuk objek CLR dalam contoh SQL Server 2005.

Informasi lebih lanjut

Cara meng-upgrade atau penurunan rakitan

SQL Server 2005, Anda dapat menggunakan pernyataan ALTER rakitan untuk meng-upgrade atau penurunan rakitan berdiri sendiri yang tidak dibuat dengan nama yang kuat. Untuk rakitan yang kuat bernama, Anda dapat meng-upgrade tetapi tidak dapat menurunkan perakitan menggunakan pernyataan ALTER rakitan.

Anda tidak dapat meningkatkan atau menurunkan rakitan dalam skenario berikut ini:

  • Rakitan A dibuat untuk objek CLR dalam contoh. Rakitan A memiliki rakitan direferensikan. Rakitan direferensikan adalah rakitan B.

  • Rakitan B telah direferensikan perakitan.

  • Anda mengkompilasi ulang rakitan A referensi versi yang berbeda dari rakitan B.

Dalam skenario ini, Anda dapat menggunakan pernyataan mengubah rakitan meng-upgrade rakitan B ke versi baru. Jika rakitan B bukan rakitan kuat bernama, Anda juga dapat menurunkan rakitan B untuk versi lama. Namun, Anda tidak dapat menggunakan pernyataan mengubah rakitan meng-upgrade atau downgrade A rakitan untuk versi recompiled.

Perilaku ini terjadi karena SQL Server membuat kebijakan perpaduan CLR saat Anda membuat rakitan A. Kebijakan ini perpaduan CLR secara otomatis peta versi rakitan B metadata rakitan A ke versi aktual rakitan B. SQL Server memuat versi baru dari rakitan B saat menjalankan ketika Anda meng-upgrade atau penurunan rakitan B untuk beberapa versi. Perilaku ini terjadi meskipun rakitan A merujuk ke versi asli rakitan B. Namun, ketika Anda mencoba untuk meng-upgrade atau penurunan rakitan A saat rakitan A berisi versi baru rakitan B di metadata, mengubah rakitan pernyataan akan gagal dan Anda menerima pesan galat yang menyerupai berikut ini:

Pesan kesalahan 1

MSG 6529, tingkat 16, negara bagian 1, baris 1

MENGUBAH rakitan gagal karena identitas direferensikan rakitan 'RefAsm' telah diubah. Pastikan versi, nama, dan kunci publik yang tidak berubah.

Pesan galat 2

MSG 6282, tingkat 16, negara bagian 1, baris 1

MENGUBAH rakitan gagal karena rakitan direferensikan akan berubah. Daftar direferensikan rakitan harus tetap sama.

Peningkatan atau penurunan rakitan

Catatan

  • Langkah-langkah ini meningkatkan atau menurunkan rakitan A dalam skenario yang dijelaskan di bagian "Cara meng-upgrade atau penurunan rakitan".

  • Contoh ini mengasumsikan bahwa versi dua rakitan yang 1.0.0.0 dan rakitan keduanya ditulis dalam C#. Ketika Anda mengikuti langkah-langkah ini, Anda berusaha meningkatkan rakitan A dan B rakitan ke versi 2.0.0.0.

Untuk meng-upgrade atau penurunan rakitan A, ikuti langkah-langkah berikut.

  1. Buat cadangan versi 1.0.0.0 rakitan B ke folder.

  2. Memodifikasi dan kemudian mengkompilasi ulang rakitan B ke versi 2.0.0.0.

  3. Gunakan pernyataan ALTER rakitan meng-upgrade rakitan B di SQL Server 2005.

  4. Memodifikasi dan kemudian mengkompilasi ulang rakitan A ke versi 2.0.0.0. Ketika Anda melakukannya, referensi versi 1.0.0.0 rakitan B dari cadangan yang Anda buat di langkah 1. Untuk melakukannya, gunakan alat compiler Csc.exe bersama-sama dengan /reference switch. Misalnya, gunakan perintah berikut ini:

    CSC /target:library/keluar:AssemblyA.dll AssemblyAdialokasikan AssemblyInfo.cs /reference: "BackupFolder\AssemblyB.dll"Catatan Untuk memverifikasi versi rakitan B metadata rakitan A, buka rakitan A dengan menggunakan utilitas Ildasm.exe. Kemudian, verifikasi informasi metadata untuk rakitan dirujuk di bawah bagian MANIFEST .

  5. Gunakan pernyataan mengubah rakitan meng-upgrade rakitan A di SQL Server 2005.

Cara downgrade rakitan bernama kuat

Jika Anda menggunakan rakitan bernama kuat untuk objek CLR, SQL Server 2005 tidak mendukung penggunaan pernyataan mengubah rakitan downgrade rakitan. Jika Anda mencoba untuk menurunkan versi rakitan menggunakan pernyataan mengubah rakitan, Anda menerima pesan galat yang menyerupai berikut ini:

MSG 6579, tingkat 16, negara bagian 1, baris 1
Mengubah rakitan dari ' Asm1, versi = 1.1.0.0, budaya = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = merupakan implementasi Microsoft terhadap ' untuk ' Asm1, versi = 1.0.0.0, budaya = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = merupakan implementasi Microsoft terhadap ' bukan upgrade yang kompatibel.

Apabila Anda ingin menurunkan rakitan bernama kuat, ikuti langkah-langkah berikut:

  1. Drop semua objek yang tergantung pada Majelis.

  2. Drop versi yang lebih baru Majelis.

  3. Membuat versi lama dari Majelis.

  4. Membuat semua objek yang diperlukan yang tergantung pada Majelis.

Catatan Anda dapat meningkatkan rakitan bernama kuat menggunakan pernyataan mengubah perakitan. Namun, jika upgrade melibatkan rakitan direferensikan, Anda harus mengikuti langkah yang sama yang tercantum di bagian "Peningkatan atau penurunan rakitan".

Referensi

Untuk informasi selengkapnya tentang mengubah rakitan pernyataan, kunjungi situs Web Microsoft Developer Network (MSDN) berikut:

http://msdn2.microsoft.com/en-us/library/ms186711.aspxUntuk informasi lebih lanjut tentang utilitas Ildasm.exe, kunjungi website MSDN berikut:

http://msdn2.microsoft.com/en-us/library/aa309387(VS.71).aspx

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×