Majelis Mengikat redirect: Bagaimana dan Mengapa?

Ini bukan masalah pertanyaan tapi pemahaman umum pertanyaan di majelis mengikat mengarahkan's bekerja.

Pertanyaan

  1. Mengapa mengikat redirect hanya menunjukkan versi utama dan minor, membangun dan angka revisi?
  2. Apakah versi lama dan baru berubah hanya ketika ada perubahan di versi utama?
Mengomentari pertanyaan (3)
Larutan

Kenapa mengikat mengarahkan diperlukan sama sekali? Misalkan anda memiliki aplikasi yang referensi perpustakaan B, dan juga perpustakaan C dari versi 1.1.2.5. Perpustakaan B pada gilirannya juga referensi perpustakaan C, tapi dari versi 1.1.1.0. Sekarang kita memiliki konflik, karena anda tidak dapat memuat versi yang berbeda dari perakitan yang sama pada saat runtime. Untuk menyelesaikan konflik ini mungkin anda gunakan mengikat mengarahkan, biasanya untuk versi baru (tapi bisa untuk yang tua juga). Anda melakukan itu dengan menambahkan baris berikut ke aplikasi.file konfigurasi dari aplikasi, di bawah konfigurasi > waktu > assemblyBinding bagian (lihat [di sini][1] untuk contoh lengkap config):





Anda juga dapat menentukan berbagai versi untuk peta:

Sekarang perpustakaan B, yang disusun dengan mengacu C dari versi 1.1.1.0 akan menggunakan C versi 1.1.2.5 pada saat runtime. Tentu saja, anda lebih baik memastikan bahwa perpustakaan C kompatibel atau ini mungkin menyebabkan hasil yang tak terduga.

Anda dapat mengarahkan setiap versi dari perpustakaan, tidak hanya yang utama.

[1]: https://msdn.microsoft.com/en-us/library/0ash1ksb(v=vs. 110).aspx

Komentar (19)

Kami menemukan masalah dengan mengikat mengarahkan untuk NewtonSoft.Json. Kami melihat versi file di win 10 file properties "9.0.1.19813", mendongak jumlah dan redirect terus gagal. Penyelidikan lebih lanjut dan menemukan bahwa kami melihat versi file dan bukan versi majelis. Jadi, aku bertanya-tanya jika orang-orang mengira Versi File (yang sering berubah-ubah) dan Majelis versi (yang dapat anda't melihat di windows 10 File Explorer). Untuk melihat versi Perakitan dll anda dapat menjalankan ini di powershell. Ganti nama dll dengan salah satu yang anda ingin untuk menemukan versi.

[Reflection.AssemblyName]::GetAssemblyName('C:\development\bin\Newtonsoft.Json.dll').Version

Hasil di atas adalah.

Major  Minor  Build  Revision

-----  -----  -----  --------

9      0      0      0

Lihat Referensi:

https://stackoverflow.com/questions/4147164/how-can-i-see-the-assembly-version-of-a-net-assembly-in-windows-vista-and-newer

https://support.microsoft.com/en-nz/help/556041

Komentar (1)