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 einCodeFile
-Attribut statt einesCodeBehind
-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();
}
}