Freigeben über


Compilerfehler CS0433

Der Typ „Typname1“ ist sowohl in „Typname2“ als auch in „Typname3“ vorhanden.

Zwei Assemblys, auf die in der Anwendung verwiesen wird, enthalten den gleichen Namespace und den gleichen Typ, was zu Mehrdeutigkeit führt.

Um diesen Fehler zu beheben, verwenden Sie die Aliasfunktion der Compileroption (References), oder verweisen Sie nicht auf eine Ihrer Assemblys.

Dieser Fehler kann auch in folgenden Fällen auftreten:

  • Die @ Page-Anweisung ein CodeFile-Attribut statt eines CodeBehind-Attribut hat.
  • Code im Ordner App_Code platziert wird, der da nicht hingehört.

Beispiele

Durch diesen Code wird die DLL mit der ersten Kopie des mehrdeutigen Typs erstellt.

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

Durch diesen Code wird die DLL mit der zweiten Kopie des mehrdeutigen Typs erstellt.

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

Wenn Sie also diese beiden Bibliotheken (CS0433_1.dll und CS0433_2.dll) im Projekt verwenden, ist die Verwendung des Typs AggPubImpAddPubImp mehrdeutig und führt zum Compilerfehler CS0433.

<!-- CS0433_3.csproj -->
<ProjectReference Include="..\CS0433_1\CS0433_1.csproj" />  
<ProjectReference Include="..\CS0433_2\CS0433_2.csproj" />  
// CS0433_3.cs in CS0433_3.csproj  
// or compile with: /reference:cs0433_1.dll /reference:cs0433_2.dll  
using TypeBindConflicts;

public class Test
{  
   public static void Main()
   {  
      AggPubImpAggPubImp n6 = new AggPubImpAggPubImp();   // CS0433  
   }  
}  

Im folgenden Beispiel wird die Verwendung des Aliasfeatures der Compileroption /reference oder des Features <Aliases> in <ProjectReference> zum Beheben des Fehlers CS0433 veranschaulicht.

<!-- CS0433_4.csproj -->  
<ProjectReference Include="..\CS0433_1\CS0433_1.csproj">  
  <Aliases>CustomTypes</Aliases>
</ProjectReference>
<ProjectReference Include="..\CS0433_2\CS0433_2.csproj" />  
// CS0433_4.cs in CS0433_4.csproj  
// compile with: /reference:cs0433_1.dll /reference:CustomTypes=cs0433_2.dll  
extern alias CustomTypes;  
using TypeBindConflicts;  

public class Test
{  
   public static void Main()
   {  
      // AggPubImpAggPubImp taken from CS0433_1.dll 
      AggPubImpAggPubImp n6 = new AggPubImpAggPubImp();
      
      // AggPubImpAggPubImp taken from CS0433_2.dll
      CustomTypes.TypeBindConflicts.AggPubImpAggPubImp n7 =
          new CustomTypes.TypeBindConflicts.AggPubImpAggPubImp();
   }  
}