在本簡介文章中,我們將探索在Visual Studio中建立 解決方案 和 專案 的意義。 解決方案是用來組織一或多個相關程式碼專案的容器,例如類別庫專案和對應的測試專案。 我們將查看項目的屬性及其可包含的一些檔案。 我們也會在一個專案中創建對另一個專案的參考。
提示
如果您尚未安裝 Visual Studio,請移至 Visual Studio 下載 頁面免費安裝。
我們將從頭開始建構解決方案和專案,作為教育練習,以了解專案的概念。 在 Visual Studio 的一般使用中,您可能會使用 Visual Studio 在建立新專案時所提供的一些各種專案 範本。
注意
在 Visual Studio 中開發應用程式不需要解決方案和專案。 您也可以開啟包含程式代碼的資料夾,並開始撰寫程式代碼、建置和偵錯。 例如,如果您複製 GitHub 存放庫,它可能不會包含 Visual Studio 專案和解決方案。 如需詳細資訊,請參閱 在沒有專案或方案的情況下在 Visual Studio 中開發程式碼。
方案和專案
儘管其名稱,但解決方案不是「答案」。 解決方案只是Visual Studio用來組織一或多個相關專案的容器。 當您在 Visual Studio 中開啟方案時,它會自動載入方案所包含的所有專案。
建立解決方案
我們從建立一個空的解決方案開始我們的探索。 瞭解 Visual Studio 之後,您可能不會發現自己經常建立空的解決方案。 當您建立新專案時,如果尚未開啟方案,Visual Studio 會自動建立方案來存放專案。
開啟 Visual Studio。
在 [開始] 視窗中,選擇 [[建立新專案]。
在 [建立新專案] 頁面上,在搜尋方塊中輸入 [空白解決方案],選取 [空白方案] 範本,然後選擇 [下一步]。
將解決方案命名 QuickSolution,然後選擇 [建立]。
方案會出現在 Visual Studio 視窗右側 [方案總管] 中。 您可能會經常使用 方案總管 來瀏覽項目的內容。
開啟 Visual Studio。
在 [開始] 視窗中,選擇 [[建立新專案]。
在 [建立新專案] 頁面上,在搜尋方塊中輸入 [空白解決方案],選取 [空白方案] 範本,然後選擇 [下一步]。
將解決方案命名 QuickSolution,然後選擇 [建立]。
方案會出現在 Visual Studio 視窗右側 [方案總管] 中。 您可能會經常使用 方案總管 來瀏覽項目的內容。
新增專案
現在讓我們將第一個專案新增至方案。 我們將從空白項目開始,並將我們需要的專案新增至專案。
從 [方案總管] [方案總管] 中 方案 'QuickSolution' 的右鍵或操作功能表中,選擇 [新增>專案]。
開啟對話框,指出 [新增專案]。
在頂端的搜尋方塊中輸入文字 空白,然後選取 [Language] 底下的 [visual Basic ]。
選取 空白專案 (.NET Framework) 樣本,然後選擇 [下一步] 。
將專案命名為 QuickDate,然後選擇「建立」。
名為 QuickDate 的專案會出現在 [方案總管] 的方案下方。 目前它包含稱為 App.config的單一檔案。
注意
如果您沒有看到 空白專案 (.NET Framework) 範本,您必須安裝 .NET 桌面開發 Visual Studio 工作負載。 Visual Studio 會使用工作負載型安裝,只安裝您執行之開發類型所需的元件。 當您建立新專案時,安裝新工作負載的一個簡單方式,就是在顯示 找不到您要尋找的專案?的文字下,選擇 安裝更多工具和功能 連結。 Visual Studio 安裝程式啟動之後,選擇 .NET 桌面開發 工作負載,然後選擇 [修改] 按鈕。
從 [方案總管] [方案總管] 中 方案 'QuickSolution' 的右鍵或操作功能表中,選擇 [新增>專案]。
開啟對話框,指出 [新增專案]。
在頂端的搜尋方塊中輸入文字 empty,然後在 [所有語言] 下拉式清單中選取 [Visual Basic]。
選取 空白專案 (.NET Framework) 樣本,然後選擇 [下一步] 。
將專案命名為 QuickDate,然後選擇「建立」。
名為 QuickDate 的專案會出現在 [方案總管] 的方案下方。 目前它包含稱為 App.config的單一檔案。
注意
如果您沒有看到 空白專案 (.NET Framework) 範本,您必須安裝 .NET 桌面開發 Visual Studio 工作負載。 Visual Studio 會使用工作負載型安裝,只安裝您執行之開發類型所需的元件。 當您建立新專案時,安裝新工作負載的一個簡單方式,就是在顯示 找不到您要尋找的專案?的文字下,選擇 安裝更多工具和功能 連結。 Visual Studio 安裝程式啟動之後,選擇 .NET 桌面開發 工作負載,然後選擇 [修改] 按鈕。
將項目新增至專案
我們有一個空專案。 讓我們新增程式代碼檔案。
從 [方案總管] 中 QuickDate 專案的右鍵或操作功能表中,選擇 [新增>新增專案]。
[新增項目對話方塊] 隨即開啟。
展開 一般專案,然後選擇 Code。 在中間窗格中,選擇 類別 項目範本。 將類別命名為 Calendar,然後選擇 [新增] 按鈕。
名為 Calendar.vb 的檔案會新增至專案。 結尾的 .vb 是提供給 Visual Basic 程式代碼檔案的擴展名。 檔案會出現在 [方案總管 ]的視覺項目階層中,並在編輯器中開啟其內容。
使用下列程式代碼取代 Calendar.vb 檔案的內容:
Class Calendar Public Shared Function GetCurrentDate() As Date Return DateTime.Now.Date End Function End Class
Calendar
類別包含傳回目前日期的單一函式GetCurrentDate
。在 [方案總管] 中按兩下 [我的專案],以開啟項目屬性。 在 [應用程式] 索引標籤上,將 [應用程式類型] 變更為 [類別庫 ]。 必須執行此步驟,才能成功建置專案。
在 [方案總管] 中,以滑鼠右鍵按兩下QuickDate,然後選擇 [建置] 來建置專案。 您應該會在 [輸出] 視窗中看到成功的建置訊息。
新增第二個專案
解決方案通常會包含一個以上的專案,而且這些專案通常會彼此參考。 方案中的某些專案可能是類別庫、某些可執行的應用程式,有些可能是單元測試專案或網站。
讓我們將單元測試專案新增至我們的解決方案。 這次我們將從專案範本開始,因此我們不需要將額外的程式代碼檔案新增至專案。
- 從 [方案總管] [方案總管] 中 方案 'QuickSolution' 的右鍵或操作功能表中,選擇 [新增>專案]。
在 [新增專案] 對話框中,在頂端的搜尋方塊中輸入 單元測試,然後在 [語言] 下選取 [Visual Basic]。
選擇 單元測試專案 (.NET Framework) 項目樣本,然後選擇 [下一步]。
將專案命名為 QuickTest,然後選擇 建立。
第二個專案會新增至 [方案總管],並在編輯器中開啟名為 UnitTest1.vb 的檔案。
在 [新增專案] 對話框中,在頂端的搜尋方塊中輸入 單元測試,然後在 [所有語言] 下拉式清單中選取 [Visual Basic]。
選擇 單元測試專案 (.NET Framework) 項目樣本,然後選擇 [下一步]。
將專案命名為 QuickTest,然後選擇 建立。
第二個專案會新增至 [方案總管],並在編輯器中開啟名為 UnitTest1.vb 的檔案。
新增項目參考
我們將使用新的單元測試專案來測試我們在 QuickDate 專案中的方法,因此我們需要新增對該專案的引用。 參考會在兩個項目之間建立 建置相依性,這表示當您建置方案時,先建置 QuickDate,然後再建置 QuickTest。
選擇 [參考] 節點於 QuickTest 專案中,然後從右鍵選單或內容選單中選擇 [新增參考]。
[參考管理員] 對話框隨即開啟。
在左窗格中,展開 [專案],然後選擇 [方案 ]。 在中間窗格中,選擇 [QuickDate] 旁的複選框,然後按 [確定] 按鈕。
已新增 QuickDate 項目的引用。
選擇 [參考] 節點於 QuickTest 專案中,然後從右鍵選單或內容選單中選擇 [新增參考]。
[參考管理員] 對話框隨即開啟。
在左窗格中,展開 [專案],然後選擇 [方案 ]。 在中間窗格中,選擇 [QuickDate] 旁的複選框,然後按 [確定] 按鈕。
已新增 QuickDate 項目的引用。
新增測試程序代碼
現在,我們會將測試程序代碼新增至Visual Basic程式碼檔案。 使用下列程式代碼取代 UnitTest1.vb 的內容。
<TestClass()> Public Class UnitTest1 <TestMethod()> Public Sub TestGetCurrentDate() Assert.AreEqual(Date.Now.Date, QuickDate.Calendar.GetCurrentDate()) End Sub End Class
您會在部分程序代碼底下看到紅色波浪線。 我們將藉由將測試項目設為 friend 元件, 至 QuickDate 專案,來修正此錯誤。
回到 QuickDate 專案中,如果尚未開啟檔案,請開啟 Calendar.vb 檔案,並新增下列 Imports 語句 和 InternalsVisibleToAttribute 屬性,以解決測試專案中的錯誤。
Imports System.Runtime.CompilerServices <Assembly: InternalsVisibleTo("QuickTest")>
程式代碼檔案看起來應該像這樣:
現在,我們會將測試程序代碼新增至Visual Basic程式碼檔案。 使用下列程式代碼取代 UnitTest1.vb 的內容。
<TestClass()> Public Class UnitTest1 <TestMethod()> Public Sub TestGetCurrentDate() Assert.AreEqual(Date.Now.Date, QuickDate.Calendar.GetCurrentDate()) End Sub End Class
您會在部分程序代碼底下看到紅色波浪線。 我們將藉由將測試項目設為 friend 元件, 至 QuickDate 專案,來修正此錯誤。
回到 QuickDate 專案中,如果尚未開啟檔案,請開啟 Calendar.vb 檔案,並新增下列 Imports 語句 和 InternalsVisibleToAttribute 屬性,以解決測試專案中的錯誤。
Imports System.Runtime.CompilerServices <Assembly: InternalsVisibleTo("QuickTest")>
程式代碼檔案看起來應該像這樣:
項目屬性
包含 屬性的 InternalsVisibleToAttribute 檔案中的行會參考 QuickTest 專案的組件名稱(檔名)。 元件名稱不一定與項目名稱相同。 若要尋找專案的元件名稱,請開啟項目屬性。
在 [方案總管] 中,選取 QuickTest 專案。 從滑鼠右鍵或操作選單中,選取 [屬性],或者只需按 Alt+Enter。 (您也可以 在 [方案總管]中按兩下 [我的專案] 。
在 [應用程式] 索引標籤上開啟項目的 屬性頁。屬性頁包含項目的各種設定。 請注意,QuickTest 專案的元件名稱確實為 “QuickTest”。 如果您想要變更元件名稱,這就是您要這麼做的地方。 然後,當您建置測試專案時,產生的二進位檔名稱會從 QuickTest.dll 變更為您選擇的任何檔案。
探索專案屬性頁中的其他一些索引標籤,例如 編譯 和 設定。 這些索引標籤會隨著專案類型的不同而有所變化。
包含 屬性之 InternalsVisibleToAttribute 檔案中的行會參考 QuickTest 專案的元件名稱(檔名)。 元件名稱不一定與項目名稱相同。 若要尋找專案的元件名稱,請開啟項目屬性。
在 [方案總管] 中,選取 QuickTest 專案。 從滑鼠右鍵或操作選單中,選取 [屬性],或者只需按 Alt+Enter。 (您也可以 在 [方案總管]中按兩下 [我的專案] 。
在 [應用程式] 索引標籤上開啟項目的 屬性頁。屬性頁包含項目的各種設定。 請注意,QuickTest 專案的元件名稱確實為 “QuickTest”。 如果您想要變更元件名稱,這就是您要這麼做的地方。 然後,當您建置測試專案時,產生的二進位檔名稱會從 QuickTest.dll 變更為您選擇的任何檔案。
探索專案屬性頁中的其他一些索引標籤,例如 編譯 和 設定。 這些索引標籤會隨著專案類型的不同而有所變化。
(選擇性)執行測試
如果您想要檢查單元測試是否正常運作,請從功能表欄選擇 [測試>執行>所有測試]。 一個名為 測試總管 的視窗隨即開啟,您應該會看到 TestGetCurrentDate 測試通過。
提示
如果 測試總管 未自動開啟,請從功能表欄選擇 測試>Windows>測試總管 開啟。
如果您想要檢查單元測試是否正常運作,請從功能表欄選擇 [測試]>[執行所有測試]。 一個名為 測試總管 的視窗隨即開啟,您應該會看到 TestGetCurrentDate 測試通過。
提示
如果 測試總管 未自動開啟,請從功能表欄選擇 測試>Windows>測試總管 開啟。
後續步驟
如果您想要進一步探索Visual Studio,請考慮遵循其中一個 Visual Basic教學課程來建立應用程式。