編譯器錯誤 CS0433
類型 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();
}
}
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應