架構目標概觀
在 Visual Studio 中,您可以指定您想要以項目為目標的 .NET 版本。 架構目標可協助保證應用程式只使用指定架構版本中可用的功能。 若要讓 .NET Framework 應用程式在另一部計算機上執行,應用程式的目標架構版本必須與計算機上安裝的架構版本相容。
Visual Studio 解決方案可以包含以不同 .NET 版本為目標的專案。 不過,請注意,您只能針對單一版本的 .NET 建置,使用單一組建的參考條件,或為每個目標架構建置不同的二進位檔。 如需目標架構的詳細資訊,請參閱 目標架構。
提示
您也可以以不同平臺的應用程式為目標。 如需詳細資訊,請參閱 多重目標設定。
架構目標功能
架構目標包含以下特點:
當您開啟以舊版架構為目標的專案時,Visual Studio 可以自動升級專案,或讓目標保持 as-is。
當您建立 .NET Framework 專案時,您可以指定您想要設定目標的 .NET Framework 版本。
您可以在相同方案中的數個專案中,以不同版本的 .NET 為目標。
您可以變更現有項目的目標 .NET 版本。
當您變更項目目標的 .NET 版本時,Visual Studio 會對參考和組態檔進行任何必要的變更。
當您處理以舊版架構為目標的專案時,Visual Studio 會動態變更開發環境,如下所示:
它會篩選 [新增專案] 對話框中的專案、[新增參考] 對話方塊,以及 [新增服務參考] 對話框,以省略目標版本中無法使用的選項。
它會篩選 [工具箱] 中的自定義控件,以移除目標版本中無法使用的控件,並在有多個控件可用時只顯示最 up-to日期控件。
它會篩選 IntelliSense,以省略目標版本中無法使用的語言功能。
它會篩選 [屬性] 視窗中的屬性,以省略目標版本中無法使用的屬性。
它會篩選功能表選項,以省略目標版本中無法使用的選項。
針對組建,它會使用適用於目標版本的編譯程式和編譯程序選項。
注意
- 架構目標不保證您的應用程式會正確執行。 您必須測試您的應用程式,以確定它針對目標版本執行。
- 您無法以 .NET Framework 2.0 以下的 Framework 版本為目標。
變更目標架構
在現有的 Visual Basic、C# 或 F# 專案中,您會在 [項目屬性] 對話框中變更目標 .NET 版本。 如需變更 C++ 專案目標版本的相關資訊,請改參閱 如何修改目標框架及平台工具組。
在 [方案總管]中,開啟您要變更之專案的滑鼠右鍵操作功能表,然後選擇 [[屬性]。
在 [屬性] 視窗的左欄中,選擇 [應用程式] 索引標籤。
注意
建立 UWP 應用程式之後,您無法變更 Windows 或 .NET 的目標版本。
在 [目標框架] 列表中,選擇您想要的版本。
在顯示的 [驗證] 對話框中,選擇 [是] 按鈕。
專案卸載。 重載時,它會以您剛才選擇的 .NET 版本為目標。
在 [方案總管]中,開啟您要變更之專案的滑鼠右鍵操作功能表,然後選擇 [[屬性]。
在 [屬性] 視窗的左欄中,選擇 [應用程式] 索引標籤。
註記
建立 UWP 應用程式之後,您無法變更 Windows 或 .NET 的目標版本。
在 [目標框架] 列表中,選擇您想要的版本。
針對 .NET Framework 專案,您看到的對話框看起來可能類似下列螢幕快照:
針對 .NET 專案,對話框看起來可能類似下列螢幕快照:
如果出現驗證對話框,請選擇 是 按鈕。
專案正在卸載。 重載時,它會以您剛才選擇的 .NET 版本為目標。
以多個架構為目標
使用 .NET 5 和更新版本,您可以手動編輯項目檔,在單一組建中建置多個架構的專案。 開啟項目檔,並以 TargetFrameworks
取代 TargetFramework
屬性,並指定以分號分隔的目標 Framework Monikers (TFM) 清單,如下列程式代碼所示:
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
請參閱 SDK 樣式專案中 目標架構的 TFM 清單。
進行這項變更之後,您必須重載專案。 之後,如果您開啟 [屬性] 視窗,請在 [應用程式] 索引標籤中,編輯目標架構清單。
注意
如果您的程式代碼包含與目標版本不同的 .NET 參考,當您編譯或執行程式代碼時,可能會顯示錯誤訊息。 若要解決這些錯誤,請修改參考。 請參閱 針對 .NET 框架的目標錯誤進行疑難排解。
提示
視目標架構而定,它可以在項目檔中以下列方式表示:
- 針對 .NET Core 應用程式:
<TargetFramework>netcoreapp2.1</TargetFramework>
- 適用於 .NET Standard 應用程式:
<TargetFramework>netstandard2.0</TargetFramework>
- 針對 .NET Framework 應用程式:
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
選取目標框架版本
當您建立 .NET Framework 專案時,您可以在選取專案範本之後選取目標 .NET Framework 版本。 可用的架構清單包含適用於所選範本類型的已安裝架構版本。 針對 non-.NET Framework 專案範本,例如 .NET Core 範本,不會出現 Framework 下拉式清單。
如果您選擇 建立 .NET Framework 專案,您會看到類似下列螢幕快照的介面:
如果您選擇 建立 .NET 專案,您會看到類似下列兩個螢幕快照的使用者介面(UI)。
您會看到的第一個畫面是 [設定新專案] 對話框。
您會看到的第二個畫面是 [其他選項] 對話框。
解決系統和使用者組件參考
若要設定目標為 .NET 版本,您必須先安裝適當的組件引用。 您可以在 .NET 下載 頁面上下載不同版本的 .NET 開發人員套件。
針對 .NET Framework 專案,[新增參考] 對話框會停用與目標 .NET Framework 版本無關的系統元件,因此無法不小心新增至專案。 (系統元件是 .dll 等檔案,包含在 .NET Framework 的版本中。)屬於高於目標版本的架構版本的參考將無法解析,因此無法新增相依於這類參考的控制項。 如果您想要啟用這類參考,請將專案的 .NET Framework 目標重設為包含參考的 .NET Framework 目標。
如需元件參考的詳細資訊,請參閱在設計時間 解析元件。
啟用LINQ
當您以 .NET Framework 3.5 或更新版本為目標時,系統會自動新增 System.Core 和專案層級的 System.Linq 匯入(僅限 Visual Basic)。 如果您想要使用 LINQ 功能,您也必須開啟 Option Infer
(僅限 Visual Basic 中)。 如果您將目標變更為舊版 .NET Framework,則會自動移除參考和匯入。 如需詳細資訊,請參閱 使用 LINQ。