Ошибка компилятора CS0433Compiler Error CS0433

Тип "имя типа 1" существует одновременно в "имя типа 2" и "имя типа 3"The type TypeName1 exists in both TypeName2 and TypeName3

Две разных сборки, на которые ссылается ваше приложение, содержат одинаковые пространство имен и тип, в результате чего возникает неоднозначность.Two different assemblies referenced in your application contain the same namespace and type, which produces ambiguity.

Чтобы устранить эту ошибку, используйте функцию псевдонима параметра компилятора /reference (параметры компилятора C#) или удалите ссылку на одну из этих сборок.To resolve this error, use the alias feature of the /reference (C# Compiler Options) compiler option or do not reference one of your assemblies.

Эта ошибка также может возникнуть в веб-форм ASP.NET, если:This error can also occur in ASP.NET Web Forms if:

  • Директива @ Page имеет атрибут CodeFile вместо атрибута CodeBehind.The @ Page directive has a CodeFile attribute when it should be a CodeBehind attribute.
  • Код располагается в папке App_Code, хотя не должен.Code is placed in an App_Code folder that shouldn't reside there.

Эта ошибка также может возникать, если код находится в папке APP_CODE, которая не должна быть в папке APP_CODE.This error can also occur if code is in an APP_CODE folder that should not be in an APP_CODE folder.

ПримерExample

Этот код создает библиотеку DLL с первой копией неоднозначного типа.This code creates the DLL with the first copy of the ambiguous type.

// CS0433_1.cs  
// compile with: /target:library  
namespace TypeBindConflicts   
{  
   public class AggPubImpAggPubImp {}  
}  

ПримерExample

Этот код создает библиотеку DLL со второй копией неоднозначного типа.This code creates the DLL with the second copy of the ambiguous type.

// CS0433_2.cs  
// compile with: /target:library  
namespace TypeBindConflicts   
{  
   public class AggPubImpAggPubImp {}  
}  

ПримерExample

В следующем примере возникает ошибка CS0433.The following example generates CS0433.

// CS0433_3.cs  
// compile with: /reference:cs0433_1.dll /reference:cs0433_2.dll  
using TypeBindConflicts;  
public class Test   
{  
   public static void Main()   
   {  
      AggPubImpAggPubImp n6 = new AggPubImpAggPubImp();   // CS0433  
   }  
}  

ПримерExample

В следующем примере показано, как можно использовать функцию псевдонима параметра компилятора /reference для устранения возникшей ошибки CS0433.The following example shows how you can use the alias feature of the /reference compiler option to resolve this CS0433 error.

// CS0433_4.cs  
// compile with: /reference:cs0433_1.dll /reference:TypeBindConflicts=cs0433_2.dll  
using TypeBindConflicts;  
public class Test   
{  
   public static void Main()   
   {  
      AggPubImpAggPubImp n6 = new AggPubImpAggPubImp();  
   }  
}