Program WinForm .NET yang saya tulis beberapa waktu lalu. Karena mereferensikan banyak file perpustakaan, tetapi file perpustakaan ini baru-baru ini diperbaiki karena beberapa bug dan algoritma. Namun file program utama tidak banyak berubah. Jadi tidak seperti mengkompilasi ulang program utama. Jadi semua file DLL versi baru disalin ke direktori yang sedang berjalan, dengan harapan program utama dapat langsung memanggil file perpustakaan versi baru. Ternyata file perpustakaan ini ditandatangani dengan Nama Kuat. Terjadi kesalahan segera setelah program utama dipanggil, mengatakan bahwa file versi ini tidak dapat ditemukan.
Kemudian, saya memeriksa MSDN dan menemukan bahwa menambahkan node runtime ke konfigurasi saja sudah cukup.
<waktu proses>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<Perakitan Bergantung>
<assemblyIdentity name="MyAssembly"
publicKeyToken="2b7c3a3291de04"
budaya="netral" />
<bindingRedirect oldVersion="3.0.0.8"
Versi baru="4.1.0.0"/>
</perakitan dependen>
</pengikatan perakitan>
</runtime>
Namun, prasyaratnya adalah PublicKeyToken kedua DLL tersebut sama, yang berarti keduanya harus ditandatangani dengan file sn yang sama.
Tentu saja, jika file perpustakaan Anda tidak ditandatangani dengan Nama Kuat sama sekali, masalah versi tidak perlu dipertimbangkan.