Com certeza. Você pode obter o erro do compilador "Referência ambígua" quando dois objetos não podem ser distinguidos. Normalmente, você pode especificar o caminho completo no código e isso não causará um problema, mas se as dlls forem totalmente idênticas, não será possível distinguir de maneira alguma dois objetos. Sya, temos duas DLLs:
System.IO que contém a classe File
e
MyProject.IO que contém uma classe File
Se você tivesse algo assim ...
using System.IO;
using MyProject.IO;
...
private void foo()
{
File f = new File();
}
... você teria uma referência ambígua, pois não há como saber de qual arquivo você está falando. Isso o corrigia:
using System.IO;
using MyProject.IO;
...
private void foo()
{
MyProject.IO.File f = new MyProject.IO.File();
}
A única maneira de corrigir isso seria se o caminho do "Arquivo" fosse idêntico nos dois assemblies, mas isso exigiria a situação improvável em que duas DLLs tinham uma estrutura de namespace idêntica. Por exemplo, minha situação acima nunca aconteceria, pois ninguém nomeará o projeto "Sistema" (com exceção dos desenvolvedores reais da estrutura .Net).