Di sicuro. È possibile ottenere l'errore del compilatore "Riferimento ambiguo" quando non è possibile distinguere due oggetti. In genere, è possibile specificare il percorso completo nel codice e non causerà un problema, ma se le DLL fossero completamente identiche, non si sarebbe in grado di distinguere tra due oggetti in alcun modo. Sya abbiamo due DLL:
System.IO che contiene la classe File
e
MyProject.IO che contiene una classe File
Se avessi qualcosa di simile ...
using System.IO;
using MyProject.IO;
...
private void foo()
{
File f = new File();
}
... avresti un riferimento ambiguo, poiché non c'è modo di sapere di quale file stai parlando. Questo lo risolverebbe:
using System.IO;
using MyProject.IO;
...
private void foo()
{
MyProject.IO.File f = new MyProject.IO.File();
}
L'unico modo in cui sarebbe difficile risolvere sarebbe se il percorso di "File" fosse identico in entrambi gli assembly, ma ciò richiederebbe la situazione improbabile in cui due DLL avevano una struttura dello spazio dei nomi identica. Ad esempio, la mia situazione di sopra non sarebbe mai successa, dal momento che nessuno chiamerebbe il progetto "Sistema" (ad eccezione degli sviluppatori effettivi del framework .Net).