共用方式為


設定 C# 語言版本

警告

不建議將 LangVersion 元素設定為 latest。 此 latest 設定表示已安裝的編譯器會使用其最新版本。 這個版本可能會因電腦而異,導致組建不可靠。 此外,它所啟用的語言功能可能需要目前 SDK 中未包含的執行階段或程式庫功能。

如果您必須明確指定您的 C# 版本,您可以透過數種方式進行:

提示

您可在專案屬性頁面中查看 Visual Studio 中的語言版本。 在 [建置] 索引標籤下,[進階] 窗格會顯示選取的版本。

若要知道目前使用的語言版本,請在程式碼中放置 #error version (區分大小寫)。 如此會讓編譯器回報編譯器錯誤 CS8304,其中包含所使用的編譯器版本,以及目前選取的語言版本。 如需詳細資訊,請參閱 #error (C# 參考)

為什麼您無法在Visual Studio中選取不同的 C# 版本

在 Visual Studio 中,可能會停用透過 UI 變更語言版本的選項,因為預設版本與專案的目標架構一致(TFM)。 此預設組態可確保語言功能和運行時間支援之間的相容性。

例如,將目標 TFM(例如,從 .NET 6 變更為 .NET 9),將會據以將語言版本從 C# 10 更新為 C# 13。 此方法可防止運行時相容性問題,並因為不支援的語言功能而將非預期的建置錯誤降到最低。

如果您需要與自動選取的語言版本不同的特定語言版本,請參閱下列方法,直接在專案檔中覆寫預設設定。

編輯專案檔

您可以在專案檔中設定語言版本。 例如,如果您明確希望存取預覽功能,您可以新增如下元素:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

preview 值會使用編譯器支援的最新預覽 C# 語言語言。

設定多個專案

若要設定多個專案,您可建立包含 元素的 <LangVersion> 檔案 (通常在您的解決方案目錄中)。 將下列設定新增至 Directory.Build.props 檔案:

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

在包含該檔案的目錄中,所有子目錄的組建現在皆會使用預覽 C# 版本。 如需詳細資訊,請參閱自訂組建

C# 語言版本參考

重要

不支援使用比目標 TFM 相關聯的版本還新的 C# 語言版本。

下表顯示所有目前的 C# 語言版本。 較舊的編譯器可能無法了解每個值。 若安裝最新的 .NET SDK,則可存取列出的所有項目。

意義
preview 編譯器會接受最新預覽版本的所有有效語言語法。
latest 編譯器會接受編譯器最新已發行版本 (包括次要版本) 的語法。
latestMajor
default
編譯器會接受編譯器最新已發行主要版本的語法。
13.0 編譯器只接受 C# 13 或更低版本中所含的語法。
12.0 編譯器只接受 C# 12 或更低版本中所含的語法。
11.0 編譯器只接受 C# 11 或更低版本中所含的語法。
10.0 編譯器只接受 C# 10 或更低版本中所含的語法。
9.0 編譯器只接受 C# 9 或更低版本中所含的語法。
8.0 編譯器只會接受 C# 8.0 或更低版本中所含的語法。
7.3 編譯器只會接受 C# 7.3 或更低版本中所含的語法。
7.2 編譯器只會接受 C# 7.2 或更低版本中所含的語法。
7.1 編譯器只會接受 C# 7.1 或更低版本中所含的語法。
7 編譯器只會接受 C# 7.0 或更低版本中所含的語法。
6 編譯器只會接受 C# 6.0 或更低版本中所含的語法。
5 編譯器只會接受 C# 5.0 或更低版本中所含的語法。
4 編譯器只會接受 C# 4.0 或更低版本中所含的語法。
3 編譯器只會接受 C# 3.0 或更低版本中所含的語法。
ISO-2
2
編譯器只接受 ISO/IEC 23270:2006 C# (2.0) 中所含的語法。
ISO-1
1
編譯器只會接受 ISO/IEC 23270:2003 C# (1.0/1.2) 所含的語法。