2017 年 9 月

第 32 卷,第 9 期

本文章是由機器翻譯。

.NET Core - 以希望的方式及希望的位置撰寫 .NET 應用程式

Andrew Hall | 2017 年 9 月

希望您聽說由既然 Microsoft.NET 不再不只適用於 Windows。.NET core 將可寫入的任何作業系統執行的應用程式選擇 (Windows、 macOS 或 Linux) 使用的語言您偏好 (C#、 Visual Basic 或 F #)。當然,能夠撰寫以您選擇的平台為目標的應用程式,您會預期相同一直.NET 開發的一大特徵的絕佳的開發人員工具。最棒的工具時,我們支援的平台已經成長,因此可用於建立絕佳的.NET 應用程式的工具。 

在本文中,我們將引導您的開發工具可根據您個人的工作風格和作業系統。我們將開始您可以使用任何編輯器配對 (雖然建議使用 Visual Studio 程式碼) 的 SDK 所隨附的命令列工具,然後介紹我們最新的成員,Visual studio 之前,我們將示範 Visual Studio 2017 絕佳新功能系列,Visual Studio for mac。最後,我們會得出結論,以顯示這些工具如何讓您可利用軟體容器,然後再次嘗試您的應用程式順暢地在 Microsoft Azure 雲端中。

基本概念

這篇文章的目的,我們將使用詞彙 「.NET Core"everywhere 為了一致性,但有兩個重要的技術,此名稱的涵蓋:.NET Core 和.NET 標準。.NET core 是跨平台執行階段執行的應用程式。標準.NET 是編譯器強制執行的一組 Api,可用做為目標之類別庫,讓單一程式庫可以在任何支援標準的執行階段上執行。例如,.NET Core 2.0、.NET Framework 4.6.1 和 Mono 4.8 支援.NET 2.0 (和上一個) 的標準類別程式庫。進一步了解這個概念,請參閱隨附文件,「 Demystifying.NET Core 和.NET 標準 」 這個問題。

它也值得注意的是.NET Core 和.NET Standard 2.0 所支援的語言。概括而言,這兩種技術會支援 C#、 Visual Basic 和 F # 2.0 中。不過,我們的目的,使用 Visual Basic 這一版已啟用.NET 標準 2.0 類別庫。這表示 Visual Basic 只提供範本,類別庫和主控台應用程式,而 C# 和 F # 也包括 ASP.NET Core 2.0 應用程式的範本。

改善 Common 專案檔

您會發現有關.NET Core 專案使用的第一個項目是它們共用高度簡化的通用專案格式。這表示使用一種工具 (例如,命令列工具) 建立的專案將在任何支援.NET Core (例如 Visual Studio 或 Visual Studio for Mac) 的項目上運作。使用我們新的專案檔案格式,我們便移除了需要 Guid,以及明確列出包含的檔案,可大幅減少合併衝突時認可更新至版本控制。下列程式碼會顯示新的 C#.NET Core 主控台應用程式的專案檔的整個內容:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>
</Project>

此外,常見的格式表示相同的小組成員可以利用自己選擇的平台與裝置運作。如果想要在 Windows 中,另一個和第三個在 Linux 上的 Mac 上工作的一位小組成員可以所有順暢地參與相同的專案。若要了解有關更新的專案格式的詳細資訊,請造訪aka.ms/newprojectfile

命令列工具

任何開發人員工具的基礎是軟體開發套件 (SDK),和.NET Core 並無不同。可讓您建立、 建置及執行應用程式從命令列的命令列介面 (CLI),其中一個.NET Core SDK 不可或缺的一部分。使用 CLI 中,您可以使用您最愛的編輯器使用不需要安裝加重加權工具建立應用程式。若要開始使用,請安裝免費的.NET Core SDK-[(可從 dot.net)。

安裝 SDK 之後,開啟您最愛的命令提示字元並執行"dotnet-說明 」 以查看可供您使用的所有命令的清單。Dotnet 命令是.NET CLI,文法其中是 「 dotnet < 動作 > [參數] 」 的驅動程式。例如,若要查看所有專案類型範本可用來建立,輸入 「 dotnet 新。 」  若要建立新的專案,提供簡短名稱為"new"的動作; 的參數例如,"dotnet 新 razor"將使用新.NET Core 2.0 Razor 頁面 (若要深入了解這個很棒的新功能,請參閱 aka.ms/razorpages) 建立 C# ASP.NET Core Web 應用程式。若要執行應用程式,類型 「 dotnet 執行 」,而且會建置並啟動應用程式。開啟瀏覽器來輸出字串 (例如,http://localhost:5000/) 中所指示的 URL,可讓您要建置的應用程式互動。  從這一點,開發是選擇您最愛的編輯器,可建置並執行應用程式的簡單方式。

單元測試

應用程式之後,您會想要加入支援單元測試相對較早開發週期中。單元測試適用於您的 Ide,您所預期的但您也可以建置和執行單元測試直接從.NET CLI。 

您可能已注意到 「 新 dotnet 」 提供兩種不同的單元測試專案類型: xunit 和 mstest。若要開始使用,請建立單元測試專案與測試架構,例如"dotnet 新 xunit,「 您慣用的單元測試,然後在您的測試專案資料夾類型中 「 dotnet 加入參考 < 若要測試的專案路徑 > 」 有 CLI 將參考加入專案為您的檔案。單元測試專案之後,執行您的測試專案,從 CLI 使用 「 dotnet 測試 」 命令。不論您選擇哪些專案類型,由 Visual Studio 和 Visual Studio for Mac、 以及 CLI 支援 xunit 和 mstest 的專案。

Visual Studio Code

雖然您可以自由使用任何您想要的編輯器,我們認為 Visual Studio 程式碼提供使用者想要編輯經驗,.NET Core CLI 搭配輕量型的最佳體驗。  Visual Studio 程式碼會使用原始檔控制我們輕量型跨平台編輯器和偵錯支援內建的。您可以使用.NET CLI,Visual Studio 程式碼,來建立您選擇的任何平台上的.NET 應用程式。若要開始使用您要安裝.NET Core SDK 先前所討論。一旦它在您的電腦上,從 code.visualstudio.com,安裝 Visual Studio 程式碼,然後安裝來自 Microsoft 的 C# 擴充功能-Visual Studio 程式碼 (由 OmniSharp 所提供) 的 C#,選取 Visual Studio 程式碼左側的 [延伸] 索引標籤。(如果您使用 F #,您會想要安裝 Ionide fsharp 擴充功能時,以及。請注意,C# 擴充功能會需要為.NET Core 建置和偵錯支援。) 您現在準備好開發使用 Visual Studio 程式碼的.NET Core 專案。 

C# 擴充功能可讓 Visual Studio 程式碼,以代表您要建置並執行應用程式進行偵錯呼叫 CLI。一旦您已建立您的專案,開啟 Visual Studio 程式碼,並從 [檔案] 功能表選擇 [開啟資料夾。當您開啟的 C# 檔案 (.cs) 時,您會看到提示,建議列頂端的供應項目中所示,來建置和偵錯,產生所需的資產編輯器圖 1。選擇 [是],而且它會產生兩個檔案、 tasks.json,啟用從 Visual Studio 程式碼建置和 launch.json,可讓偵錯。您現在可以編輯、 編譯及直接從 Visual Studio 程式碼進行偵錯。

Visual Studio 供應項目以產生所需的檔案,如建置和偵錯的程式碼

圖 1 供應項目以產生所需的檔案,如建置和偵錯的 Visual Studio 程式碼

Visual Studio

Visual Studio 會繼續支援世界級的開發人員體驗,而且適用於.NET Core 的工具支援並無不同。Visual Studio 2017 (版本 15.3) 中引進了.NET core 2.0 支援。若要開始撰寫 Visual Studio 中的.NET Core 2.0 應用程式,您需要下載並安裝.NET Core 2.0 SDK。一旦您的電腦上,重新啟動 Visual Studio,您會看到.NET Core 2.0 做為新專案的目標。

我們的目標是讓 Visual Studio 2017 我們曾經提供最有效率的開發經驗。若要叫用幾個重點,我們已加入程式碼的功能改良,大量的新快速重構修正命令、 程式碼樣式強制和即時單元測試。

瀏覽和重構我們知道,當您在程式碼中一定要有絕佳的支援,以巡覽程式碼基底。在 Visual Studio 2017 巡覽程式碼最受歡迎的增強功能包括:

  • 請移至實作 (Ctrl + F12):從任何基底類型或成員可巡覽到其以各種方式實作。
  • 請移至所有 (Ctrl + T 或 Ctrl +):直接巡覽至檔案/類型/成員/符號的任何宣告。您可以使用此功能的上方圖示篩選結果清單,或使用查詢語法 (例如,"f searchTerm 」 檔案)、"t searchTerm 」 類型等等。
  • 尋找所有參考 (Shift + F12):現在使用語法顏色標示、 尋找所有參考結果可以自訂專案、 定義和路徑的組合來分組。您也可 「 鎖定 」 結果,您可以繼續而不會遺失您的原始結果中尋找其他參考。
  • 縮排指南:點線、 灰色垂直線,做為地標中程式碼提供您的檢視範圍內的內容。您可能會辨識這些從熱門的 Productivity Power Tools。

此外,它不是足夠能夠直接瀏覽程式碼基底;我們知道,當您變更或清除程式碼中找到的位置,您需要幫助您進行該重構工具。若要協助進行此設定,我們已新增支援將類型移至具有相同名稱的檔案同步處理檔案並輸入名稱,加入 null 核取的參數,加入參數,新增遺漏的參數/選取情況下,進行同步的方法將方法轉換為屬性 (反之亦然),並解決合併衝突,只是為了提供幾個。 

程式碼樣式在 Visual Studio 中 2017年,您可以設定和跨您整個儲存機制與 EditorConfig 強制執行小組編碼慣例為磁碟機一致。EditorConfig 是開啟的檔案格式,因此我們使用過其支援此格式中的.NET 程式碼樣式的社群。小組可以設定慣例喜好設定,然後選擇 [它們在強制執行方式編輯器內 (做為建議、 警告或錯誤)。規則套用到任何檔案都位於 EditorConfig 檔案所在的目錄。如果您有不同的慣例,為不同的專案,您可以定義每個專案的規則,在不同的 EditorConfig 檔案中,只要專案位於不同的目錄即可。因為在一天結束時,EditorConfig 只是一個文字檔案,因此很容易將它簽入原始檔控制並即時和隨著您的來源。若要深入了解 Visual Studio 中的 EditorConfig 支援,請參閱aka.ms/editorconfig

單元測試的即時一旦 MSTest 或 xUnit 或 NUnit 測試專案,您可以為.NET Core 專案啟用即時單元測試 (LUT)。LUT 是 Visual Studio 2017 Enterprise 版本中引進的新功能。當您啟用 LUT 時,您取得單元測試涵蓋範圍和通過/失敗的意見反應,即時程式碼編輯器中輸入時,所示圖 2。這表示您不再需要離開編輯器,以執行單元測試驗證程式碼變更。當您輸入,您會看到立即的回應會受到程式碼變更的所有測試的結果會顯示在編輯器中。

即時的單元測試的.NET Core 專案上執行

圖 2 即時單元測試的.NET Core 專案上執行

小組的熱情品質和喜愛測試為導向的開發 (TDD) 的使用者會喜歡這項新增。若要開啟 LUT,巡覽至 Visual Studio 功能表列中的測試項目,然後選取 [即時單元測試 |啟動。

Visual Studio for Mac

Visual Studio for Mac 是想 macOS 上的 IDE 體驗的開發人員在 Visual Studio 系列產品的最新的成員。Visual Studio for Mac 逐漸從 Xamarin Studio,對 C# 和 F # 專案的支援。若要開始,先安裝.NET Core 2.0 SDK (可以從下載 dot.net),會選擇建立的專案,然後選取來選擇所需的專案範本,.NET Core 類別下的應用程式項目。 

您可以找到您的完整功能的 IDE 來開發您在 Mac 上,.NET Core 應用程式中所示圖 3。我們努力在下列情況之一是要讓 Visual Studio 和 Visual Studio 之間的一致性使用經驗恢復 for mac。此時,您會有大部分得仰賴在 Visual Studio 中,包括 IntelliSense、 巡覽程式碼、 重構、 單元測試和原始檔控制整合的功能。針對 Web 程式開發,我們也帶來了 Visual Studio HTML、 CSS 和 JSON 編輯器以 Visual Studio for mac。您會發現該 Razor 檔案 (.cshtml) 及 JavaScript/TypeScript 目前不支援,但我們正努力讓支援 Visual Studio for Mac 的後續更新中。

Visual Studio for Mac

圖 3 Visual Studio for Mac

工具與記住現代化的雲端

隨著技術的發展,一件事就是清除 — 越來越多的應用程式正在設計為從一開始在雲端中執行。這表示您的工具需要啟用設計模式和實務作法納入考量,現代化的雲端,以及可讓您快速地從您的本機開發電腦的應用程式移至雲端。  記住此目標中,Visual Studio 和 Visual Studio for Mac 具有內建支援直接部署至 Microsoft Azure 發行和封裝應用程式做為 Docker 容器。

直接發行至 Azure當你準備好移至雲端中執行的應用程式時,您可能會想要藉由嘗試在雲端,而儘可能少投入時間開始。Visual Studio 和 Visual Studio for Mac,可讓您發行至 Azure App Service 應用程式直接從您的電腦。應用程式服務是完全受管理的雲端環境,可讓您執行您的應用程式,而不必擔心複雜的組態或基礎結構管理。

從 Visual Studio 或 Visual Studio 發行您的應用程式從您的本機 Azure 應用程式服務,適用於 Mac 的很簡單,以滑鼠右鍵按一下專案,然後選擇 [發行。會要求您輸入一些資訊,例如您的應用程式中,唯一的 URL,您可以選擇其中一個現有應用程式服務計劃 (多少資源您想要保留集合的成員應用程式),或如果您沒有帳戶尚未建立一個新。一旦您已輸入的資訊,將會在幾分鐘的雲端中執行您的應用程式。 

容器開發工具變得清楚了解現代化雲端開發的事情之一是,將容器改革人們架構設計人員和建置軟體。容器可讓您將應用程式封裝及其所有相依性,包括執行階段,一份成一個單位,以及確保基礎伺服器的變更永遠不會中斷您的應用程式。這可讓您部署每個邏輯單元,做為個別的容器,與定義的通訊協定,兩者之間通訊的應用程式中的微服務架構模式。這可讓您視需要而不必付出的成本調整整個應用程式中,調整規模要求高的應用程式的組件,它表示修正會影響正在更新而不是整個應用程式的容器。

這一點之後,我們使用.NET Core 的目標之一是將它設建立容器化的 microservices 頂級的執行階段。Visual Studio、 Visual Studio for Mac 和 Visual Studio Code 所有支援的建置應用程式做為 Docker 容器。(請注意,在撰寫本文時,Docker 工具支援 Visual Studio for Mac 需要 Docker 工具擴充功能,而且由 Microsoft 提供了 Visual Studio 程式碼,以支援建立 Docker 容器的 Docker 延伸模組)。

若要建置 Docker 容器,您需要針對您的作業系統安裝 Docker 的工具 (進一步了解,並從下載 docker.com)。安裝的需求之後,您只需要在 Visual Studio 或 Visual Studio for Mac 是以滑鼠右鍵按一下專案,選擇 [新增],然後選取 [Docker 的支援。這將會加入您的方案和專案 Dockerfile docker-compose 專案。這些資產可讓您的專案內建到 Docker 容器。當您接著可以執行應用程式從 IDE 時,您將執行並直接偵錯應用程式位在容器內,而不是主機電腦上。最棒的工具是 Azure App Service 體驗,我們也討論發行支援發行 Linux Docker 容器。

結論

如果還未嘗試建置.NET Core 應用程式,但沒有較佳現在開始時間。.NET core 與標準.NET 2.0 (如 「 Demystifying.NET Core 和.NET 標準 」 文章中討論),讓建立.NET 應用程式輕鬆無論您選擇何種工具、 作業系統、 語言或工作樣式。 

我們希望您找到本教學課程可用.NET Core 工具非常有用。您可以繼續在 aka.ms/dotnetblog 我們部落格上遵循我們小組的進度和未來的增強功能。請試試我們討論和提供意見反應對我們可以進一步改善您建立.NET Core 應用程式的體驗的工具。您可以保留註解和問題,在我們的部落格文章,或傳送意見反應直接透過 Visual Studio 和 Visual Studio for Mac 使用報告問題並提供 Ide 內建的建議功能。


Andrew Hall 是程式管理員帶領的.NET 語言和 Visual Studio 中的工具。之後從大學畢業,他會再傳回給他碩士學位電腦科學的學校寫入特定業務應用程式。完成之後他主要的程度,他可以加入診斷小組其中他工作的偵錯工具、 程式碼剖析和程式碼分析工具的 Visual Studio 中。他接著移到.NET 語言和工具小組他適用於.NET 語言和支援的工具,包括 ASP.NET、 Web 和 Azure 應用程式服務的工具。您可以連線到 Twitter 透過 Hall: @AndrewBrianHall

Joe Morris 是.NET Core 工具和 Visual Studio 中的即時單元測試的程式管理員。他在電腦科學中擁有主要的程度。已啟動他刊登內容提交到在美國境內的企業應用程式開發人員顧問做 1990年中。他可以加入 Microsoft 1997 與 Microsoft 諮詢服務中,稍後,及更新版本移雷德蒙德。過去兩年來他焦點一直靜態程式碼分析和開發人員生產力工具。您可以連線到 Twitter 透過 Morris: @_jomorris

非常感謝下列 Microsoft 技術專家已檢閱本文章:Dustin Campbell、 菲利浦卡特、 Livar 昆哈群島、 Mikayla Hutchinson Mads Kristensen,約旦 Matthiesen 和 Kasey Uhlenhuth

 


MSDN Magazine 論壇中的這篇文章的討論