解決與元件參考相關的錯誤和警告

  • CS0012:類型 'type' 定義於未參考的組件中。您必須新增組件 'assembly' 的參考。
  • CS0234: 命名空間中不存在類型或命名空間名稱(您是否遺漏元件參考?)
  • CS0246: 找不到類型或命名空間名稱(您是否遺漏 using 指令或元件參考?)
  • CS0400: 全域命名空間中找不到類型或命名空間名稱(您是否遺漏元件參考?)
  • CS1068:在 全域命名空間中找不到類型名稱。此類型已轉送至另一個元件。請考慮新增該元件的參考。
  • CS1069: 在命名空間中找不到類型名稱。此類型已轉送至另一個元件。請考慮新增該元件的參考。
  • CS1070: 找不到類型名稱。此類型已轉送至另一個元件。請考慮新增該元件的參考。
  • CS1704: 已匯入具有相同簡單名稱的元件。請嘗試移除其中一個參考,或對它們進行簽署以啟用並行作業。
  • CS1714: 無法解析此類型的基類或介面或無效。
  • CS1760: 多個元件參考相同的元數據,但只有一個是鏈接參考(使用 /link 選項指定):請考慮移除其中一個參考。
  • CS7008: 元件名稱是保留的,無法在互動式會話中當做參考使用。
  • CS7068:類型的參考聲稱其已在此元件中定義,但在來源或任何添加的模組中並無定義。
  • CS7069: 類型參考聲稱它是在另一個元件中定義,但無法找到此元件。
  • CS7071: 元件參考無效,無法解析。
  • CS7079: 類型定義於尚未新增的模組中。您必須新增模組。
  • CS8090: 參考的元件發生錯誤。
  • CS8203: 元件名稱無效。
  • CS8206: 模組名稱在組件「assembly name」中,將型別「type name」轉發給多個組件:「第一個組件名稱」和「第二個組件名稱」。
  • CS8356: 預先定義的型別「類型名稱」在多個參考組件中宣告:「第一個組件名稱」與「第二個組件名稱」
  • CS9286: 類型不包含定義,而且找不到接收者類型的可存取擴充成員(您是否遺漏 using 指示詞或元件參考?)

此外,本文還涵蓋以下警告:

  • CS1683: 類型 'Type Name' 的參考聲稱在這個元件中定義,但它並未在原始程式碼或任何新增的模組中定義。

遺漏引用

下列錯誤和警告表示您遺漏元件參考:

  • CS0012: 類型 'type' 定義於未被參考的組件中。您必須新增組件 'assembly' 的參考。
  • CS0234: 命名空間中不存在類型或命名空間名稱(您是否遺漏元件參考?)
  • CS0246: 找不到類型或命名空間名稱(您是否遺漏 使用 指令或元件參考?)
  • CS1714: 無法解析此類型的基類或介面或無效。
  • CS9286: 類型沒有定義,且找不到接收者類型的可存取擴充成員(您是否遺漏了 using 指示詞或組件參考?)

這些編譯程式錯誤指出程序代碼中的其中一個問題:

當組合件被指涉時

如果組件似乎被參考在您的專案中,但您仍然收到錯誤碼 CS0012,請嘗試下列疑難排解步驟:

  • 還原套件:執行 dotnet restore 以確保所有套件參考都已正確解析,尤其是在安裝或解除安裝 NuGet 套件之後。

  • 清除 NuGet 套件快取並重新還原:

    dotnet nuget locals all --clear
    dotnet restore
    
  • 檢查版本衝突:確認所有參考的元件都使用相容的版本。 在組建輸出中尋找繫結重新導向警告。

  • 清理方案並重建,以確保沒有過時的參考文件。

    dotnet clean
    dotnet build
    
  • 驗證套件完整性:如果套件操作後發生錯誤,請透過刪除並重新安裝套件來確保套件已正確安裝:

    dotnet remove package [PackageName]
    dotnet add package [PackageName]
    

類型轉送

  • CS1068:在 全域命名空間中找不到類型名稱。此類型已轉送至另一個元件。請考慮新增該元件的參考。
  • CS1069: 在命名空間中找不到類型名稱。此類型已轉送至另一個元件。請考慮新增該元件的參考。
  • CS1070: 找不到類型名稱。此類型已轉送至另一個元件。請考慮新增該元件的參考。
  • CS8206: 模組名稱在組件「assembly name」中,將型別「type name」轉發給多個組件:「第一個組件名稱」和「第二個組件名稱」。

CS1068、CS1069 和 CS1070 表示在參考已轉送至另一個組件的型別時發生錯誤。 請加入錯誤訊息中指出之組件的參考。

CS8206 表示參考組件或模組中存在衝突的型別轉發元資料。 同一類型會被轉發到多個目的組件。 使用經過修正或重建的依賴關係,將型別轉送至單一目標。 確保套件版本與組件版本一致,或移除引入衝突中繼資料的參考項目。 來源別名或本地類型宣告的無關變更無法修正引用的元資料。

重複參考

下列錯誤指出重複的元件參考:

  • CS1704: 已匯入具有相同簡單名稱的組件。請嘗試移除其中一個參考,或為它們簽署以允許並行運行。
  • CS1760: 多個元件參考相同的元數據,但只有一個是鏈接參考(使用 /link 選項指定):請考慮移除其中一個參考。
  • CS8356: 預先定義的型別「類型名稱」在多個參考組件中宣告:「第一個組件名稱」與「第二個組件名稱」

要修正這些錯誤,請移除其中一個參考或解決重複問題。 重複的原因包括:

  • 多個名稱相同的未簽署組件。
  • 您的項目會參考相同元件的多個版本。

對於 CS8356,請移除或替換定義相同預定義執行時類型的重複或不相容參考。 確保專案目標是一個連貫的框架與參考組合集。 不要再新增預設類型的原始碼定義。

無效的元件參考

下列錯誤指出元件參考無效:

  • CS7008: 元件名稱是保留的,無法在互動式會話中當做參考使用。
  • CS7068: 關於型別的參考表示它在這個組合語言中有定義,但在原始碼或任何新增模組中並未定義。
  • CS7069:指定的類型被聲稱定義在另一個組件中,但無法找到。
  • CS7071: 元件參考無效,無法解析。
  • CS7079: 類型定義於尚未新增的模組中。您必須新增模組。
  • CS8090: 參考的元件發生錯誤。
  • CS8203: 元件名稱無效。

下列警告也表示無效的參考元件:

  • CS1683: 對類型 'Type Name' 的參考聲稱該類型已在此程式集定義,但並未在源代碼或任何新增的模組中定義

請確認你拼寫正確的組裝名稱。 參考的元件檔案可能無效。