Visual Studio for Mac 簡介

FrankYou發表於2016-12-14

2016-12-13 Hutchinson 微軟中國MSDN

 

在 11 月舉行的 Connect(); 上,Microsoft 將推出 Visual Studio for Mac 預覽版。這是一個激動人心的進展,將以移動為中心的 Xamarin Studio IDE 發展成為真正的移動先行和雲優先的 .NET 和 C# 開發工具,併為 Mac 帶來 Visual Studio 開發體驗。

 

Visual Studio 系列的新成員

從本質上說,Visual Studio for Mac 是與 Windows 版 Visual Studio 對應的 macOS 版本。如果你很喜歡 Visual Studio 開發體驗,但又需要或想使用 macOS 的話,就應該不會感到陌生。

 

儘管其使用者體驗源於 Visual Studio 的啟發,但在設計上看上去就像專為 macOS 量身打造的一樣。與 Windows 版的 Visual Studio 類似,在不需要完整的 IDE 但需要輕型而豐富的獨立原始碼編輯器時,也可使用 Visual Studio Code 對其進行補充。

 

實際上,Visual Studio for Mac 還與 Visual Studio 系列中的同級產品有很多共同之處。例如,它也使用 Roslyn 編譯器平臺支援 IntelliSense 和重構功能;並同樣在專案系統和生成引擎中使用 MSBuild;而且其原始碼編輯器也支援 TextMate 捆綁包。

 

對於 Xamarin 和 .NET Core 應用,使用的是同樣的偵錯程式引擎,而且對於 Xamarin.iOS 和 Xamarin.Android 使用的是相同的設計器。

 

相容性是 Visual Studio for Mac 的一個重要關注點。儘管它是一個新產品,暫時還無法支援所有 Visual Studio 專案型別,但對於確實可支援的那些專案型別,它使用相同的 MSBuild 解決方案和專案格式。

 

如果你的團隊中既有人使用 macOs 又有人使用 Windows,或你自己在兩個 OS 之間切換,則可以無縫地跨平臺共享專案。無需執行任何轉換或遷移操作。

 

移動先行和雲優先開發

Visual Studio for Mac 支援的主要工作負載是通過 Xamarin 進行原生 iOS、Android 和 Mac 開發,以及通過 .NET Core 與 Azure 整合進行伺服器開發。它提供了這兩個開發場景所需要的所有工具,可幫助你開發當今使用者所期望的眾多原生移動應用體驗,以及為這些體驗提供強力支援的基於雲的伺服器後端。

所有這些開發都採用你熟悉並喜愛的 C# 語言,而且是最新的工作效率更高的 C# 7。

 

你不僅可獲得編譯型程式碼更好的效能、現代的型別安全語言所帶來的工作效率、對每個平臺獨特功能的訪問,而且還可以充分利用豐富生態系統中的庫和工具。可以跨移動域和雲域使用現有的體驗,在客戶端與伺服器之間共享程式碼。對於一個解決方案中的所有專案,可以利用解決方案級的跨專案重構和程式碼導航。

 

在 Visual Studio for Mac 預覽版中,C# 不是唯一支援的語言。對於你們當中的函式式程式設計師,它通過在 Visual Studio 中使用相同的 F# 編譯器,可以提供卓越的 F# 支援。

 

iOS、Android 和 Mac

對於當今碎片化的移動市場,能夠支援各種裝置顯得尤為重要。由於 Visual Studio for Mac 是基於 Xamarin Studio 的,因此,對採用 Xamarin 平臺基於 C# 開發 iOS、Android 和 Mac 應用的支援是久經考驗的。你可以利用現有的 C# 經驗和庫,跨平臺共享通用程式碼,完全訪問本機 API,因此,可以打造出快速、可媲美本機應用體驗的應用。

 

要實現更廣泛的程式碼共享,可以使用跨平臺的 Xamarin.Forms UI 庫,Visula Studio for Mac 提供了熟悉的基於 XAML 的開發環境,可以面向多平臺,包括 iOS、Android、macOS 和通用 Windows 平臺 (UWP) - 儘管 Visual Studio 當前僅支援 UWP 開發,並對映到每個平臺上的本機 UI。

 

當需要更多控制時,可以將 Xamarin.Forms 與可直接訪問的本機工具包混合搭配使用。另外,通過 NuGet 還提供了大量可用於 Xamarin 的庫生態系統,其中包括平臺特定的庫、到本機程式碼的繫結和可移植的 .NET Standard 庫。

 

與 Visual Studio 一樣,Visual Studio for Mac 也提供了拖放式設計器,可以在 iOS 和 Android 開發中使用它快速組裝和微調 UI。

 

對於 Xamarin.Forms,它提供了豐富的 XAML IntelliSense 和並行實時預覽功能,如圖 1 所示。設計器和實時預覽都可使用模擬器精確呈現應用將在實際執行裝置上的顯示效果,即使你的自定義控制元件也可以支援。

 

 
圖 1 Xamarin.Forms XAML 實時預覽

 

為雲量身定製

幾乎每個移動應用的背後都有一個為其提供支援的服務,Visual Studio for Mac 支援最新的 ASP.NET Core Web 開發平臺,讓你能夠輕鬆開發自己的應用服務。ASP.NET Core 執行於 .NET Core 上,後者是 .NET Framework 和執行時的最新發展。

 

它經過調優,可提供極快的效能,進行分解後,更便於小規模安裝,且經過重新構思設計,可在 Linux 和 macOS 以及 Windows 上執行。

 

.NET Core 提供了前所未有的巨大靈活性,讓你可以隨時隨地開發和部署自己的伺服器應用程式,無論是在自己的資料中心還是 Microsoft Azure 等雲平臺上。由於 .NET Core 和 Xamarin 平臺都是開源的,因此,不必擔憂被供應商綁架。

 

此外,Visual Studio for Mac 對 .NET Core 專案的支援也使你能夠編寫 .NET Standard 庫,這是未來跨 .NET 平臺共享程式碼的一種新方式。.NET Standard 庫取代了可移植類庫 (PCL),提供了覆蓋範圍更廣的 API。由於 .NET Core 和 Xamarin 平臺都是遵循 .NET Standard 的,因此,你可以使用它們在你的解決方案中和通過 NuGet 程式包管理器共享程式碼。

 

熟悉的工作區

Visual Studio for Mac 工作區對於現有 Visual Studio 開發人員來說應該是熟悉的。首次開啟時,會看到一個歡迎頁面,其中包含最近開啟的解決方案列表,開發人員新聞動態,以及可幫助你快速入門的其他資訊。

 

要建立新解決方案,請轉至“檔案”選單,選擇“新建專案”,之後,將顯示包含新解決方案的工作區。如圖 2 所示,處於中心位置的是一個選項卡式原始碼編輯器,周圍是一些其他停靠視窗或“皮膚”,例如“解決方案”、“輸出”、“屬性”、“文件大綱”和“工具箱”。與 Visual Studio 一樣,這種佈局可高度定製,並可根據你當前是在編碼、除錯還是在使用拖放式設計器,進行自動切換。

 

 
圖 2 Visual Studio for Mac 工作區

 

工具欄也是非常熟悉的,但也有一些明顯的差別:

左側是“執行”按鈕、從中選擇“活動配置”的下拉選單,以及從中選擇“執行配置”和“目標裝置”的下拉選單。對於跨平臺移動開發,通過下拉選單能夠輕鬆切換在上面測試或除錯應用程式的裝置或模擬器。“執行配置”與 Visual Studio 中的啟動專案類似,除了能夠切換執行的專案之外,還可以為執行選項集建立自定義名稱。

 

工具欄的中心位置是通知區域,其中顯示有關各種操作(例如,生成或還原 NuGet 程式包)的訊息。當有操作正在執行時,通知區域中會出現一個取消按鈕。有關軟體更新的通知也顯示在通知區域中。有些通知你可以直接單擊,例如生成錯誤,可顯示提供更多資訊的皮膚。

 

在工具欄的右側是全域性搜尋。除了幫助你在解決方案中查詢命令和檔案之外,它的 camelCase 篩選系統還使其成為快速啟用命令或跳轉至解決方案中的檔案或型別的極好方法。它甚至還可以在解決方案中啟動“在檔案中查詢”搜尋,或開啟 NuGet 程式包管理器以搜尋包。

 

“解決方案”皮膚的工作方式與 Visual Studio 中的“解決方案資源管理器”基本相同,可以方便地瀏覽和管理解決方案以及其中專案和檔案的結構。上下文選單會根據在解決方案樹中選擇的項提供各種上下文特定的命令,例如,在專案中新增或刪除檔案,編輯專案引用,在資料夾中開啟終端視窗,以及生成或除錯特定專案。

 

“錯誤”皮膚會顯示任何生成警告和錯誤,在拆分檢視中還可以看到生成日誌輸出。與 Visual Studio 不同,沒有一個統一的皮膚來顯示所有型別的輸出。例如,“應用程式輸出”皮膚會顯示執行或除錯應用程式時來自應用的輸出,NuGet 操作日誌會顯示在“NuGet 控制檯”皮膚。“屬性”皮膚會根據上下文顯示當前專注並選中的任何內容的屬性,可用於檢視和更改解決方案皮膚中的檔案生成操作。

 

原始碼編輯器是整個 IDE 的中心,包含可從 Visual Studio 系列成員獲得的所有功能。圖 3 顯示 .NET Core 專案中的 C# IntelliSense 語法突出顯示。還有程式碼摺疊、鍵入時用下劃線實時進行錯誤提醒和建議提示、可配置的自動格式設定、程式碼導航命令和一系列強大的重構工具。

 

 
圖 3 .NET Core 專案中的 IntelliSense

 

預設情況下,並不會啟用編輯器的所有功能。可從 Mac 應用程式選單中,開啟“首選項”對話方塊,調整 Visual Studio for Mac 設定。這相當於 Visual Studio“工具”選單中的“選項”對話方塊,其中包含很多選項,供你按需自定義 IDE。

 

對單元測試使用 NUnit 進行支援,其他測試執行程式可通過擴充套件插入。程式集中發現的測試會顯示在“單元測試”皮膚中,該皮膚可從“檢視 | 皮膚”選單進行訪問。在原始碼編輯器中也整合了 Git 版本控制,在編輯器底部顯示有一行選項卡,可以訪問當前檔案的日誌、差異和責任檢視。

 

如果希望利用更多的提示和技巧快速進入狀態,建議從 Xamarin Evolve 2016 觀看我的“Become a Xamarin Studio Expert(成為 Xamarin Studio 專家)”講座 (xmn.io/xs-expert),因為這個講座內容正好適用於 Visual Studio for Mac。

 

開源的核心

與 Xamarin Studio 一樣,Visual Studio for Mac 是基於開源的 MonoDevelop IDE(這也是 Microsoft 積極開發的開源專案)。它完全採用 C# 編寫,具有強大的可擴充套件性模型,從簡單的編輯器命令到全新的語言和專案型別,都可以通過擴充套件來新增功能性。即使已有核心功能,例如 C# 編輯,對 Xamarin.iOS、Xamarin.Android 和 ASP.NET Core 的支援也都是通過擴充套件實現。

 

與 Visual Studio 和 Visual Studio Code 一樣,Visual Studio for Mac 中對 C# 的支援也是基於開源 Roslyn 編譯器平臺實現的。你可擁有與使用 Visual Studio 時完全相同且熟悉的 IntelliSense 體驗,並且支援編輯器中實時分析器和程式碼修復。Visual Studio for Mac 甚至還預設包括分析器和程式碼修復的 Refactoring Essentials 集合。

 

藉助 TextMate 捆綁包提供語法突出顯示和簡單的 IntelliSense,Visual Studio for Mac 可支援編輯各種語言。它包括了來自 Visual Studio Code 的大量開源 TextMate 捆綁包。

 

建立 ASP.NET Core 應用

為了展示使用 Visuao Studio for Mac 加速開發是多麼容易,接下來我會建立一個簡單的 ASP.NET Core 後端進行演示。它用於一個假想的“共享待辦事項列表”移動應用,允許多個使用者新增事項,只要其中任何一個使用者釋出事項,所有使用者都可以看到。

 

請注意,我在撰寫本文時使用的是 Visual Studio for Mac 預釋出版,UI 的一些細節在釋出版中可能會有所變動。但是,本文介紹的方法和概念仍是適用的。

安裝並開啟 Visual Studio for Mac 後,首先在歡迎頁面上單擊“新建解決方案”按鈕,這會開啟“新建專案”對話方塊。

 

之後,導航到“雲”部分,選擇“ASP.NET Core Web 應用程式”模板,單擊“下一步”,然後選擇“Web API”模板。“Web API”模板會建立一個 RESTful Web 服務,這是適用於移動後端的首選介面方式,不過你也可以稍後向專案中新增檢視以建立 Web 前端。

 

最後,我將專案命名為 HelloVSMac,並單擊“建立”。Visual Studio for Mac 使用 .net 模板引擎建立專案,開啟專案,並開始還原專案所依賴的 NuGet 程式包。

 

如果使用解決方案皮膚中專案上的“工具 | 編輯檔案”上下文選單在編輯器中開啟專案檔案,則會看到它是一個便於理解的基於 MSBuild 的簡單專案檔案。如果直接對其編輯並儲存,則 IDE 將自動重新載入經過修改的版本。

 

接下來在解決方案皮膚中看一下專案,關鍵項包括:

 

程式包: 專案的 NuGet 程式包依賴項。生成專案的 ASP.NET Core、.NET Core 框架和 MSBuild 目標都通過 NuGet 程式包進行安裝。

 

Program.cs: Web 應用的入口點。ASP.NET Core 應用是程式,因此,有一個主要方法入口點,用於在應用核心建立、生成和執行 WebHost。

Startup.cs: 用於定義傳遞至 WebHost 的 Startup 類。該類包含應用程式的初始化方法。

 

appsettings.json: 應用的配置設定。這是 ASP.NET web.config 的 ASP.NET Core 等效項。

 

出於演示目的,所有這些將不做改動,下面看一下 Views 資料夾中的 ValuesController.cs 檔案。該檔案包含在 [Route("api/[controller]")] 路由上註冊的 ValuesController 類。[controller] 是類名稱的佔位符,因此實際上是 api/values 路由。

 

我先定義一個非常簡單的 ToDoItem 類和一個 ToDoList 儲存類。ToDoList 是靜態的,因此可以在請求之間共享。

 

在實際應用中,會使用一個資料庫,但目前就先這樣吧。我還將 controller 類重新命名為 ToDoController(使路由變為 api/todo),將 Get 和 Post 方法連線至儲存,並清除其他未使用的 controller 方法。結果如圖 4 所示。

 

圖 4 Controller 及其簡單的共享待辦事項列表儲存

[Route("api/[controller]")]
public class ToDoController : Controller { [HttpGet] public IEnumerable<ToDoItem> Get() { return ToDoList.GetAll(); } [HttpPost] public void Post([FromBody]ToDoItem item) { ToDoList.Add(item); } }

public class ToDoItem { public string Title { get; set; } }

public static class ToDoList { static List<ToDoItem> list = new List<ToDoItem>(); public static void Add(ToDoItem item) { lock (list) { list.Add(item); } } public static IEnumerable<ToDoItem> GetAll() { lock (list) { return list.ToArray(); } } }

 

現在,我們實現了一個完整但非常小的 RESTful Web 服務。讓我們來試一試。

我在 Post 方法中放置一個斷點,然後開始除錯應用。應用啟動時,“輸出”皮膚開始顯示 ASP.NET Core 內建 Kestrel Web 伺服器的輸出,輸出埠預設採用 5000,但它在收到請求之前不會執行任何其他操作。

 

可以開啟 Web 瀏覽器,訪問 127.0.0.1:5000/api/todo,但此刻返回的只是一個空陣列。

 


圖 5 除錯 .NET Core 專案

 

由於現在並沒有一個針對該服務的移動客戶端,因此,需要開啟 macOs 終端應用,使用 curl 嚮應用傳送一個 POST 請求:

 

$ curl -H "Content-type: application/json" -X POST -d '{ title: "build
  mobile app" }' 127.0.0.1:5000/api/todo

 

這會觸發偵錯程式中的斷點。可以檢查自動從請求的 JSON 主體解析並轉換為 ToDoItem 物件的值。你會看到 Visual Studio for Mac 自動進入除錯佈局,並提供了所期望的所有偵錯程式皮膚: 堆疊、區域性、執行緒、斷點等等。

現在,返回到終端,使用 curl 訪問 Get 方法,你會看到 JSON 陣列包含了剛剛新增的項。

$ curl 127.0.0.1:5000/api/todo
[{"title":"build mobile app"}]

 

下一步是生成移動應用,就請你自行進行探索吧。如需更深入瞭解有關 ASP.NET Core 的資訊,建議訪問asp.net/get-started;如需瞭解有關 Xamarin 開發的更多資訊,請訪問 developer.xamarin.com,其中提供了大量有價值的資料供你參考。儘管有關 Visual Studio for Mac 的文件還不多,但 Xamarin Studio 文件恰好適用於大多數情況,Visual Studio 文件通常也適用。

總結

我希望這篇簡介能夠經引發你試用 Visual Studio for Mac 的興趣,使其成為你進行雲端和移動端開發的優選 macOS IDE! 如果你有 Mac,建議從 VisualStudio.com 下載預覽版,試試看,讓我們知道你的看法。我們很高興聽到你的反饋,以幫助在預覽版及其之後版本中提供指導。

 

相關文章