帥呆了!微軟釋出 Visual Studio for Mac 預覽版

cnblogs發表於2016-11-17

  11 月 17 日更新:微軟釋出了 Visual Studio for Mac 預覽版,官方釋出博文:Announcing the new Visual Studio for Mac ,下載地址:https://www.visualstudio.com/vs/visual-studio-mac/ 。

  編者注:Visual Studio for Mac - Introducing Visual Studio for Mac 這篇英文原文連結現在已經無法訪問,猜測這篇文章應該是在 Connect (); 2016 宣佈這一訊息後釋出,可能是被提前誤釋出了。

  從 Hacker News 上得知的確是微軟誤釋出的:

Since this was an accidental post (now removed) in advance of the actual announcement and release, we've buried this story. That way we can avoid treating the actual announcement as a duplicate when it happens.

  大致翻譯如下:

  在即將於 11 月 16 日舉行的 Connect (); 2016 線上研討會上,微軟將釋出 Visual Studio for Mac 預覽版。這是 .NET 社群讓人欣喜若狂的一個進展,微軟將以移動開發為中心的 Xamarin Studio IDE 進化成為了真正的 “mobile-first, cloud-first” 的 .NET 開發工具,將 Visual Studio 宇宙第一的開發體驗帶到了宇宙第一的開發電腦 Mac 上。

  Visual Studio 家族的新成員

  本質上,Visual Studio for Mac 是 Windows 版 Visual Studio 的 macOS 版。如果你很享受 Visual Studio 的開發體驗,又很喜歡 macOS ,擁有 Visual Studio for Mac ,你在 Mac 上做開發將有一種如家的感覺 —— 身在 macOs ,卻親切如 Windows 。它的使用者體驗源於 Visual Studio ,卻和 macOs 的體驗結合得天衣無縫,看起來用起來就如為 macOS 量身打造。

  除了外觀上與 macOS 的融合,Visual Studio for Mac 在功能上也不打折扣,Windows 版 Visualt Studio 有的很多功能它都有,比如基於 Roslyn 編譯平臺的 IntelliSense (智慧感知) 與 refactoring(重構),project 系統與 build 引擎用的也都是 MSBuild。對於 Xamarin 與 .NET Core 程式,用的是同樣的 debugger 引擎。

  相容性是 Visual Studio for Mac 的重要關注點。雖然它是一個全新的產品,不支援所有的 Visual Studio 專案型別,但是對於支援的專案型別,它使用同樣的 MSBuild 解決方案與專案檔案格式。如果你的團隊中既有人使用 macOs 又有人使用 Windows,或者你自己在這兩個作業系統之間切換,你可以在不同平臺之間無縫地共享 Visual Studio 專案,無需任何轉換與遷移。

  Mobile-First, Cloud-First 開發

  目前 Visual Studio for Mac 支援的主要開發場景是基於 Xamarin 進行原生 iOS、Android、Mac 應用開發和基於 .NET Core 進行服務端應用開發。它提供了這兩個開發場景所需要的所有工具。

  所有這些開發都用你所熟知、你所喜愛的 C# 語言來完成,而且是生產力更高的 C# 7.0。你可以擁有編譯型程式碼更好的效能,你可以擁有先進的型別安全語言所帶來的更高生產力;你可以發揮各個平臺特有的優勢,你可以充分利用 .NET 生態系統中豐富多彩的類庫與工具;你可以在移動端與雲端運用已有的經驗,你可以在客戶端與服務端共享程式碼;你可以在同一個解決方案管理不同型別的專案。

  在 Visual Studio for Mac 中,除了使用 C#,你還可以使用 F# 。

  iOS, Android, Mac

  對於當今碎片化的移動市場,能夠覆蓋更多移動裝置顯得格外重要。由於 Visual Studio for Mac 是基於 Xamarin Studio ,所以它對使用 C# 開發 iOS, Android, Mac 應用的支援是久經考驗的。你可以運用已有的 C# 開發經驗,利用現有的 .NET 類庫,跨平臺共享程式碼,不受限制地呼叫原生 API ,用 C# 打造出媲美原生語言開發的原生 App。

  你可以使用跨平臺的 Xamarin.Forms UI 類庫,實現更多的程式碼共享。Visual Studio for Mac 提供了你熟悉的基於 XAML 的開發環境,它可以跨多個平臺,比如 iOS, Android, macOS 以及 UWP。你也可以混合使用 Xamarin.Forms 與原生 toolkit 。NuGet 伺服器上提供了大量的針對 Xamarin 的類庫,供你隨時選用。

  和 Windows 版 Visual Studio 一樣,Visual Studio for Mac 也提供了拖放式 UI 設計器(drag-and drop designer),你可以在 iOS 和 Android 開發中使用它組裝與調整 UI。對於 Xamarin.Forms ,它有豐富的 XAML 智慧感知與實時預覽功能(見下圖)。設計器與實時預覽通過模擬器渲染出在實際執行裝置上的顯示效果,即使是你的自定義控制元件,也能支援。

  為雲端量身定製

  幾乎每一個移動 App 的背後都有為其提供介面、執行在伺服器上的後端服務。Visual Studio for Mac 支援最新的 ASP.NET Core Web 開發平臺,讓你開發 App 的後端服務變得更方便。ASP.NET Core 執行於 .NET Core 上,.NET Core 是 .NET Framework 與 .NET 執行時的最新進化,它被打磨得效能格外卓越,身輕如燕,超凡脫俗(超越了只能執行於 Windows 的限制)。

  海闊憑魚躍,天高任鳥飛,.NET Core 給你提供了前所未有的自由,你可以隨心所欲、隨時隨地地開發與部署服務端應用程式,無論是 Mac, Windows 還是 Linux,無論是自己的資料中心還是雲端。.NET Core 與 Xamarin 都是開源的,你也不用擔心被廠商綁架(vendor lock-in)。

  Visual Studio for Mac 對 .NET Core 專案的支援讓你可以在 Mac 上開發 .NET Standard 類庫(跨平臺共享 .NET 程式碼的新方式)。.NET Standard 類庫取代了 PCLs (Protable Class Libraries),提供了覆蓋範圍更廣的 API 。.NET Core 與 Xamarin 都是遵循 .NET Standard 標準的,你可以用它們在 VS 解決方案中或者通過 NuGet 包管理器共享程式碼。  

  熟悉的工作臺

  Visual Studio for Mac 工作臺對於使用 Visual Studio 的 .NET 開發者來說是熟悉的。當你首次開啟它,你會看到一個包含最近開啟的解決方案列表的歡迎頁,一個開發者新聞動態頁,以及一些幫助你快速上手的資訊。

  開啟 File 選單,選擇 New Project,就會建立一個新的解決方案,見下圖。

  處於中心位置的是可以通過 tab 切換的原始碼編輯器(source editor),圍繞著它的是一些停靠視窗(docked windows)與皮膚(pads),比如解決方案皮膚,輸出皮膚,屬性皮膚,文件大綱,工具箱。和 Windows 版 Visual Studio(以下簡稱 Visual Studio) 一樣,這個佈局是可以靈活定製的,而且會根據你當前的操作自動切換。

  工具欄也是熟悉的,但有一些需要注意的地方:最左邊的是執行按鈕。它的旁邊是下拉選單,可以選擇當前配置(Active Configuration)、執行配置(Run Configuration)以及目標裝置,在移動開發時,通過下拉選單可以方便地根據你測試或除錯的 App 切換裝置與模擬器。執行配置類似於 Visual Studio 的啟動專案,除了可以選擇當前執行的專案,它還可以為執行配置選項集建立自定義名稱。

  在工具欄中間位置的是通知區域,它會顯示不同操作的相關資訊,比如 building 或者 resoring NuGet packages 。如果正在進行執行操作,通知區域會顯示一個取消按鈕。通知區域也會顯示軟體更新提示。有些通知你可以直接點選,比如 build 錯誤,點選後會開啟顯示更多資訊的皮膚(pad)。  

  在工具欄的右側是全域性搜尋。除了幫助你搜尋解決方案中的命令與檔案之外,它的 camelCase 過濾功能可以快速地啟用命令,跳轉到解決方案中的檔案或者程式碼中的型別定義。它甚至還可以在解決方案中啟動 “Find in Files” 搜尋,或者開啟 NuGet Package Manager 搜尋 NuGet 包。

  解決方案皮膚(pad)很像 Visual Studio 中的解決方案資源管理器,讓你可以方便地瀏覽與管理解決方案以及其中的專案與檔案的結構。上下文選單會根據你在解決方法樹形結構中所選擇的內容顯示相應的操作命令,比如向專案中新增檔案或者從專案中移除檔案,修改專案引用,開啟終端視窗,build 或除錯指定的專案。

  錯誤資訊皮膚會顯示任何 build 警告與錯誤,在它的分隔檢視這可以看到 build 日誌輸出。與 Visual Studio 不同,Visual Studio for Mac 沒有一個統一的視窗顯示所有的輸出,特定的輸出顯示在特定的視窗中,比如應用程式輸出視窗會顯示執行或除錯時來自應用程式的輸出,NuGet 操作日誌會顯示在 NuGet 控制檯皮膚。

  原始碼編輯器(source editor)是整個 IDE 的中心,作為 Visual Studio 家族成員之一,Visual Studio 中 source editor 所具有的有用功能,在 Visual Studio for Mac 中都有,比如下圖中顯示的是在 .NET Core 專案中的 C# 智慧感知與語法高亮,還有程式碼摺疊,輸入時用下劃線進行錯誤提醒以及輸入建議提示,可定製的自動格式化,程式碼導航命令,強大的重構工具。

  預設設定下 Visual Studio for Mac 並不會開啟編輯器的所有功能。你可以在 Mac 應用程式選單中開啟 Preferences 對話方塊調整設定,其中有很多選項供你按需定製 IDE。

  對單元測試的支援使用的是 NUnit ,其它的 test runner 可以通過擴充套件新增。在你的程式集中發現的單元測試會顯示在單元測試皮膚中,你可以通過 View | Pads 選單開啟單元測試皮膚的顯示。Source editor 中也整合了 Git 版本控制,在編輯器的下方有一組標籤可以檢視當前檔案的 git log, diff, blame。

  開源的核心(Open Source Core)

  和 Xamarin Studio 一樣,Visual Studio for Mac 是基於開源的 MonoDevelop IDE(這也是微軟的開源專案),並且是完全用 C# 開發的。它擁有強大的可擴充套件能力,從新增簡單的編輯器命令到新增一種新的程式語言與專案型別,都可以通過擴充套件實現。即使已有的核心功能,比如 C# 程式碼編輯,對 Xamarin.iOS, Xamarin.Android, ASP.NET Core 的支援都是通過擴充套件實現的。

  和 Visual Studio 與 Visual Studio Code 一樣,Visual Studio for Mac 對 C# 的支援也是藉助 Roslyn 編譯器平臺實現的,你會享有與使用 Visual Studio 時同樣的智慧感知體驗,並且支援編輯器內實時 Analyzers 與 Code Fixes(Roslyn 的功能),而且預設就包含 Refacoring Essentials(也是 Roslyn 的功能)。

  藉助 TextMate bundles 提供的程式碼高亮與簡單的智慧感知,Visual Studio for Mac 可用於編輯很多程式語言。

  建立一個 ASP.NET Core 應用程式

  為了展示使用 Visuao Studio for Mac 加速你的開發是多麼容易,接下來我建立一個簡單的 ASP.NET Core 後端服務程式演示一下。它為一個假定的 “Shared To-Do List” 移動 App 提供服務介面,允許多個使用者新增待辦任務,只要一提交成功,所有使用者都可以看到。

  請注意我寫這篇文章時用的是 Visual Studio for Mac 的 pre-release 版,UI 上的一些細節在正式釋出時可能會有變化,但使用方式與概念是不會變的。

  在安裝並開啟 Visual Studio for Mac 之後,在歡迎頁面上點選 New Solution 按鈕,這時會開啟 New Project 對話方塊。將滑鼠移到 Cloud 部分,選擇 ASP.NET Core Web Application 模板,點選 Next ,然後選擇 Web API 模板(Web API 模板將為你建立 RESTful Web service ,這是移動應用後端服務首選的介面方式,之後你也可以在專案新增檢視建立 Web 前端)。

  接著,我將專案命名為 HelloVSMac 並點選 Create 。Visual Studio for Mac 使用 dotnet 模板引擎建立好專案,開啟它,並安裝專案所依賴的 Nuget 包。這時你如果用編輯器開啟剛建立的專案檔案,你會看到基於 MSBuild 的專案檔案格式。

  將目光移至解決方案皮膚(solution pad),看一下專案結構:

  Packages:顯示的是專案所依賴的 NuGet 包。

  Program.cs:(翻譯略)

  Startup.cs:(翻譯略)

  appsettings.json:(翻譯略)

  為了演示目的,上面這些不動它們,我們新增一個 ToDoItem 類與一個 ToDoList 類,並新增一個 ToDoController(這部分文字在翻譯時被精簡) ,具體程式碼如下:

[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 service 。讓我們執行它試試。

  在 ToDoController 的 Post 方法中新增一個斷點,然後啟動除錯。這時輸出皮膚(Output pad)開始顯示 Kestrel Web 伺服器啟動時的輸出。Kestrel 啟動後,你可以通過瀏覽器訪問 127.0.0.1:5000/api/todo,但此刻返回的只是一個空陣列。

  由於現在並沒有一個實際的移動客戶端,所以我們需要開啟 macOs 的終端程式,使用 curl 命令傳送一個 POST 請求給我們剛剛執行的 ASP.NET Core 演示程式。

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

  請求發出後,會觸發 debugger 中的斷點,你會看到 Visual Studio for Mac 自動進入 debugging 介面,在 debugger pads 中會顯示 Stack, Locals, Threads, Breakpoints 等等。

  這時,你回到 macOS 的終端,使用 curl 命令訪問 Get 方法,你會看到剛剛通過 POST 請求新增的資料。

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

  小結(Wrapping Up)

  我希望這篇簡介能夠引發你對 Visual Studio for Mac 的興趣。試試 Visual Studio for Mac 吧,也許它會成為你在 macOS 上進行雲端與移動端開發得心應手的 IDE 。

  英文原文:Visual Studio for Mac - Introducing Visual Studio for Mac  

相關文章