Ini sangat mungkin.
Jika Anda telah menetapkan namespace yang identik dan mengetik nama pada majelis yang berbeda (atau dalam proyek Anda dan majelis yang ditambahkan), Anda akan mendapatkan konflik dengan kode apa pun yang mencoba menggunakan salah satu dari jenis ini.
Jika Anda memastikan Anda memiliki ruang nama yang unik, seperti halnya referensi Anda, Anda tidak akan mengalami masalah ini.
Kemungkinan lain berkaitan dengan versi dependensi yang berbeda - jika proyek Anda menggunakan (misalnya) pustaka logging di versi 1.2, tetapi rakitan tambahan memiliki ketergantungan pada rakitan yang sama tetapi versi yang berbeda (katakanlah 1.3) dan proyek Anda atau rakitan yang ditambahkan telah dikonfigurasi / dibangun untuk menggunakan versi tertentu, Anda akan mendapatkan konflik dan pembangunan akan gagal.
Kedua masalah ini dapat diatasi dengan menggunakan alias rakitan, seperti dijelaskan di sini .
Melihat tidak ada orang lain yang menyebutkan ini, Anda bertanya:
Ada solusi bersih hanya untuk kasus ini, tanpa kendala, dan tanpa penyelesaian yang mengganggu. Anda dapat menetapkan Majelis alises sehingga kompiler akan tahu mana yang harus dirujuk di tempat yang tepat.
Lihat http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx
sumber
Ya ini sangat mungkin.
Katakanlah Anda menambahkan referensi ke beberapa DLL yang menggunakan versi lama Lucene.Net dan Anda ingin memasukkan versi terbaru.
Anda dapat memecahkan masalah itu dengan menggunakan alias eksternal: http://msdn.microsoft.com/en-us/library/ms173212.aspx
sumber
Anda bisa meletakkan sebanyak mungkin versi majelis yang berbeda seperti yang Anda inginkan di Global Assembly Cache asalkan nama tersebut kuat. Ini dapat membantu Anda jika Anda ingin aplikasi yang berbeda menggunakan versi majelis yang berbeda, berdasarkan mesin. Namun menggunakan versi majelis yang berbeda dalam SATU aplikasi akan tetap membuat Anda kesulitan.
Apa alasan Anda membutuhkan kedua versi pada saat yang sama?
sumber
Tentunya. Anda bisa mendapatkan kesalahan kompilator "Ambiguous Reference", ketika dua objek tidak dapat dibedakan. Biasanya, Anda dapat menentukan path lengkap dalam kode dan itu tidak akan menyebabkan masalah, tetapi jika dll sepenuhnya identik, maka Anda tidak akan dapat membedakan antara dua objek dengan cara apa pun. Sya kami memiliki dua dll:
System.IO yang berisi kelas File
dan
MyProject.IO yang berisi kelas File
Jika Anda memiliki sesuatu seperti ini ...
... Anda akan memiliki referensi yang ambigu, karena tidak ada cara untuk mengetahui file mana yang Anda bicarakan. Ini akan memperbaikinya:
Satu-satunya cara akan sulit untuk memperbaikinya adalah jika jalur "File" identik di kedua majelis, tetapi itu akan membutuhkan situasi yang tidak mungkin di mana dua dll memiliki struktur namespace yang identik. Sebagai contoh, situasi saya di atas tidak akan pernah terjadi, karena tidak ada yang akan menyebutkan proyek di sana "Sistem" (dengan pengecualian dari pengembang aktual kerangka .Net).
sumber