类型 TypeName1 同时存在于 TypeName2 和 TypeName3 中
在应用程序中引用的两个不同程序集包含相同的命名空间和类型,这会造成多义性。
若要修复此错误,请使用 (
References
) 编译器选项的别名功能,或者不引用其中任何一个程序集。
以下情况下也可能发生此错误:
当
@ Page
指令应该是
CodeBehind
属性时,它具有
CodeFile
属性。
代码置于 App_Code
文件夹中,但此文件夹不应驻留在该位置。
此代码用歧义类型的第一个副本创建 DLL。
// CS0433_1.cs in CS0433_1.csproj
// or compile with: /target:library
namespace TypeBindConflicts
public class AggPubImpAggPubImp { }
此代码用歧义类型的第二个副本创建 DLL。
// CS0433_2.cs in CS0433_2.csproj
// or compile with: /target:library
namespace TypeBindConflicts
public class AggPubImpAggPubImp { }
因此,当在项目中使用这两个库(CS0433_1.dll
和 CS0433_2.dll
)时,使用 AggPubImpAddPubImp
类型将是不明确的,并将导致编译器错误 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
下面的示例演示可如何使用 /reference 编译器选项的别名功能或 <ProjectReference>
中的 <Aliases>
功能解决此 CS0433 错误。
<!-- 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();