專案和解決方案簡介
這篇簡介文章探討在 Visual Studio 中建立「解決方案」和「專案」的意義。 解決方案是用來組織一或多個相關程式碼專案的容器,例如類別庫專案和對應的測試專案。
您將從頭建構解決方案和專案,作為了解專案概念的教育練習。 一般通常會使用 Visual Studio 專案範本來建立新專案。 您也會查看專案的屬性及其可能包含的一些檔案,並建立從一個專案對另一個專案的參考。
注意
在 Visual Studio 中開發應用程式不需要解決方案和專案。 您可以直接開啟包含程式碼的資料夾,並開始編碼、建置和偵錯。 例如,複製的 GitHub 存放庫可能不會包含 Visual Studio 專案和解決方案。 如需詳細資訊,請參閱在 Visual Studio 中不使用專案或方案來開發程式碼。
如果您尚未安裝 Visual Studio 2019,請前往 Visual Studio 下載頁面免費進行安裝。
如果您尚未安裝 Visual Studio,請前往 Visual Studio 下載頁面免費進行安裝。
方案和專案
在 Visual Studio 中,解決方案並非「解答」。 解決方案只是 Visual Studio 用來組織一或多個相關專案的容器。 當您在 Visual Studio 中開啟解決方案時,會自動載入解決方案包含的所有專案。
建立解決方案
請建立空白解決方案以開始探索。 在您了解 Visual Studio 後,就可能不會經常建立空白解決方案了。 當您建立新專案時,Visual Studio 會自動建立專案的解決方案,除非解決方案已開啟。
開啟 Visual Studio。
在 [開始] 視窗中,選取 [建立新專案]。
在 [建立新專案] 頁面的搜尋方塊中輸入空白解決方案、選取 [空白解決方案] 範本,然後選取 [下一步]。
提示
如果您安裝了數個工作負載,則 [空白解決方案] 範本可能不會出現在搜尋結果清單的頂端。 嘗試捲動至清單的 [依據搜尋內容找到的其他結果] 區段。 空白解決方案應該會出現在該處。
將解決方案命名為 QuickSolution,然後選取 [建立]。
解決方案隨即會出現在 Visual Studio 視窗右側的 [方案總管] 中。 您可能會經常使用方案總管來瀏覽專案的內容。
開啟 Visual Studio,並在 [開始] 視窗中選取 [建立新專案]。
在 [建立新專案] 頁面上的搜尋方塊中鍵入空白解決方案、選取 [空白解決方案] 範本,然後選取 [下一步]。
提示
如果您安裝了數個工作負載,則 [空白解決方案] 範本可能不會出現在搜尋結果清單的頂端。 嘗試捲動至 [依據搜尋內容找到的其他結果] 以尋找範本。
在 [設定新專案] 頁面上,將解決方案命名為 QuickSolution,然後選取 [建立]。
QuickSolution 解決方案會出現在 Visual Studio 視窗右側的 [方案總管] 中。 您會經常使用 [方案總管] 來瀏覽專案的內容。
新增專案
現在,請將您的第一個專案新增至解決方案。 先建立空白專案,再新增您需要的項目。
在 [方案總管] 中,從 [解決方案 'QuickSolution'] 的右鍵功能表或操作功能表選取 [新增]>[新增專案]。
隨即開啟一個對話方塊,表示要 [新增專案]。
在頂端的搜尋方塊中輸入文字空白,然後在 [語言] 底下選取 [C#]。
選取 [空白專案 (.NET Framework)] 範本,然後選取 [下一步]。
將專案命名為 QuickDate,然後選取 [建立]。
名為 QuickDate 的專案隨即出現在 [方案總管] 中該方案的下方。 它目前包含稱為 App.config 的單一檔案。
注意
若未看到 [空白專案 (.NET Framework)] 範本,您必須安裝 [.NET 桌面開發] Visual Studio 工作負載。 Visual Studio 會使用工作負載型安裝,僅安裝您執行的開發類型所需的元件。
有一個簡單的方式可讓您在建立新專案時安裝新的工作負載,就是在顯示 [找不到您要尋找的項目嗎?] 的文字底下,選取 [安裝更多工具與功能] 連結。 在 Visual Studio 安裝程式啟動後,選取 [.NET 桌面開發] 工作負載,然後選取 [修改] 按鈕。
在 [方案總管] 中以滑鼠右鍵按一下 [解決方案 'QuickSolution'],然後從操作功能表中選取 [新增]>[新增專案]。
在 [新增專案] 頁面的頂端搜尋方塊中輸入空白,然後在 [所有語言] 底下選取 [C#]。
選取 C# [空白專案 (.NET Framework)] 範本,然後選取 [下一步]。
注意
Visual Studio 會使用工作負載型安裝,僅安裝您執行的開發類型所需的元件。 若未看到 [空白專案 (.NET Framework)] 範本,您必須安裝 [.NET 桌面開發] Visual Studio 工作負載。
有一個簡單的方式可讓您在建立新專案時安裝新的工作負載,就是在顯示 [找不到您要尋找的項目嗎?] 的文字底下,選取 [安裝更多工具與功能] 連結。 在 Visual Studio 安裝程式中,選取 [.NET 桌面開發] 工作負載,然後選取 [修改]。
在 [設定新專案] 頁面上,將專案命名為 QuickDate,然後選取 [建立]。
QuickDate 專案會出現在 [方案總管] 中的解決方案底下。 專案包含 References 節點和名為 App.config 的單一檔案。
將項目新增至專案
將程式碼檔案新增至空白專案。
在 [方案總管] 中,從 [QuickDate] 專案的右鍵功能表或操作功能表選取 [新增]>[新增項目]。
[新增項目] 對話方塊隨即開啟。 如果對話框在精簡檢視中開啟,請選取 [ 顯示所有範本 ]。
展開 [Visual C# 項目],然後選取 [程式碼]。 在中間窗格,選取 [類別] 項目範本。 在 [名稱] 底下鍵入行事曆,然後選取 [新增]。
Visual Studio 會將名為 Calendar.cs 的檔案新增至專案。 結尾的 .cs 是 C# 程式碼檔案的副檔名。 Calendar.cs 檔案會出現在 [方案總管] 視覺效果專案階層中,並在編輯器中開啟檔案。
以下列程式碼取代 Calendar.cs 檔案的內容:
using System; namespace QuickDate { internal class Calendar { static void Main(string[] args) { DateTime now = GetCurrentDate(); Console.WriteLine($"Today's date is {now}"); Console.ReadLine(); } internal static DateTime GetCurrentDate() { return DateTime.Now.Date; } } }
您還不需要了解程式碼執行的所有動作。 按 Ctrl+F5 執行應用程式,並查看應用程式是否將今天的日期列印到主控台 (標準輸出) 視窗。 然後,關閉主控台視窗。
新增第二個專案
解決方案通常包含多個專案,且這些專案常會彼此參考。 解決方案中有些專案可能是類別庫、有些可能是可執行的應用程式,有些可能是單元測試專案或網站。
若要將單元測試專案新增至您的解決方案,請從專案範本著手,如此即無須將另一個程式碼檔案新增至專案。
在 [方案總管] 中,從 [解決方案 'QuickSolution'] 的右鍵功能表或操作功能表選取 [新增]>[新增專案]。
在 [新增專案] 對話方塊的頂端搜尋方塊中輸入文字單元測試,然後在 [語言] 底下選取 [C#]。
選取 .NET Core 的單元測試專案專案範本,然後選取 [下一步]。
注意
從 Visual Studio 2019 16.9 版開始,MSTest 專案範本名稱已從 MSTest 單元測試專案 (.NET Core) 變更為單元測試專案。 此更新中變更了專案建立的數個步驟。
將專案命名為 QuickTest,然後選取 [下一步]。
選擇建議的目標架構 (.NET Core 3.1) 或 .NET 5,然後選擇 [建立]。
第二個專案會新增至 [方案總管],並在編輯器中開啟名為 UnitTest1.cs 的檔案。
在 [方案總管] 中,從 [解決方案 'QuickSolution'] 的右鍵功能表或操作功能表選取 [新增]>[新增專案]。
在 [新增專案] 對話方塊的頂端搜尋方塊中鍵入單元測試,然後在 [所有語言] 底下選取 [C#]。
選取 C# [單元測試專案 (.NET Framework)] 專案範本,然後選取 [下一步]。
在 [設定新專案] 頁面上,將專案命名為 QuickTest,然後選取 [建立]。
Visual Studio 會將 QuickTest 專案新增至 [方案總管],並在編輯器中開啟 UnitTest1.cs 檔案。
新增專案參考
您將使用新的單元測試專案來測試您 QuickDate 專案中的方法,因此您必須將 QuickDate 的參考新增至 QuickTest 專案。 新增參考會建立兩個專案之間的組建相依性,表示在建置解決方案時會先建置 QuickDate 再建置 QuickTest。
選取 QuickTest 專案中的 [相依性] 節點,然後從右鍵功能表或操作功能表中選取 [新增專案參考]。
[參考管理員] 對話方塊隨即開啟。
在左窗格中展開 [專案],然後選取 [解決方案]。 在中間窗格選取 QuickDate 旁的核取方塊,然後選取 [確定]。
隨即新增 QuickDate 專案的參考。
在 [方案總管] 中,以滑鼠右鍵按一下 QuickTest 專案的 [參考] 節點,然後從操作功能表中選取 [新增參考]。
在 [參考管理員] 對話方塊中,選取 [專案]。 在中間窗格選取 QuickDate 旁的核取方塊,然後選取 [確定]。
QuickDate 專案的參考會出現在 [方案總管] 中的 QuickTest 專案底下。
新增測試程式碼
現在,將測試程式碼新增至 C# 測試程式碼檔案。 以下列程式碼取代 UnitTest1.cs 檔案的內容:
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace QuickTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestGetCurrentDate() { Assert.AreEqual(DateTime.Now.Date, QuickDate.Calendar.GetCurrentDate()); } } }
部分程式碼底下會出現紅色波浪線。 您可以修正此錯誤,方法是將測試專案設為 QuickDate 專案的 friend 組件。
在 Calendar.cs 檔案中,將下列 using 陳述式和 InternalsVisibleToAttribute 屬性新增至檔案頂端,以解決測試專案中的錯誤。
using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("QuickTest")]
Calendar.cs 程式碼應該會類似於下列螢幕擷取畫面:
執行單元測試
若要確認單元測試是否正常運作,請從功能表列中選擇 [測試]>[執行所有測試]。 [測試總管] 視窗隨即開啟,且您應該會看到 TestGetCurrentDate 測試通過。
提示
您也可以從功能表列中選擇 [測試]>[測試總管],以開啟 [測試總管]。
專案屬性
Calendar.cs 程式碼檔案中包含 InternalsVisibleToAttribute 屬性的那一行會參考 QuickTest 專案的組件名稱或檔案名稱。 組件名稱不一定會與專案名稱相同。 若要尋找專案的組件名稱,請使用專案屬性。 屬性頁包含專案的各種設定。
在 [方案總管] 中 ,以滑鼠右鍵按一下 QuickTest 專案並選取 [屬性],或選取專案然後按 Alt+Enter。
專案的「屬性頁」會在 [應用程式] 索引標籤中開啟。QuickTest 專案的 [組件名稱] 確實是 QuickTest。
如有需要,您可以在此變更名稱。 當您建置測試專案時,產生的二進位檔案名稱會從 QuickTest.dll 變更為 <NewName>.dll。
探索專案屬性頁的一些其他索引標籤 (例如 [建置] 和 [偵錯])。 不同專案類型的這些索引標籤不同。