Je sais que cela est ancien, mais il y a une façon plus facile que celle indiquée. Cela fonctionne lorsque vous référencez deux assemblies qui partagent des types avec le même nom et espace de noms.
Si vous cliquez avec le bouton droit sur la référence à votre DLL et sélectionnez Propriétés, vous verrez qu'il y a une propriété appelée "Alias".
![entrer la description de l'image ici]()
La valeur par défaut est "global". Pour l'un des assemblies en conflit, changez ceci pour toute autre valeur. Dans l'exemple ci-dessous, je l'ai changé de "global" à "destination".
Ensuite, dans votre fichier de code, vous devrez utiliser le mot-clé externe pour utiliser cet alias en tant que espace de noms de niveau supérieur pour ces types. Dans cet exemple, vous placeriez ce qui suit en haut de votre fichier .cs :
extern alias destination
Maintenant, dans ce fichier, vous pouvez référencer les deux types.
extern alias destination;
namespace Test
{
public static class TestClass
{
public static void Success()
{
var foo = destination::Some.Duplicate.Namespace.SomeDuplicateType();
var bar = Some.Duplicate.Namespace.SomeDuplicateType();
}
}
}
Ou, si vous avez seulement besoin d'un type dans une classe, vous pouvez également utiliser using pour l'espace de noms :
extern alias destination;
using destination::Some.Duplicate.Namespace;
namespace Test
{
public static class TestClass
{
public static void Success()
{
var foo = SomeDuplicateType();
}
}
}