微軟新一代的 VisualStudio、VisualStudio 2019 正式發布了!
這次主要的訴求,是(來源):
Code faster.
Work smarter.
Create the future.
官方網站是:
在官網可以看到,這次的主要的三個新功能是:
- 按一下就能清理程式碼:按一下按鈕就能解決警告與建議
- Visual Studio IntelliCode:從您的程式碼基底,獲取 AI 協助提供的建議
- Visual Studio Live Share:利用即時共同開發一起共用程式碼
按一下就能清理程式碼
這個功能應該是叫做「程式碼清除」(code cleanup)。現在在程式碼的視窗左下角,會有「健康狀態」的顯示,包括了這個檔案裡面有幾個錯誤、警告,讓使用者可以快速地找到對應的錯誤位置。
而如果有錯誤或警告的話,在這一列的右側,會有程式碼清除的按鈕,可以快速地根據既有的樣板,來修正程式。
不過這個功能似乎是只有 C#、VisualBasic 這些 .Net 的語言才有的,在 C++ 的專案中,雖然也會顯示健康狀態,但是卻不會有程式碼清除的按鈕和相關的功能。
Visual Studio IntelliCode
這功能官方號稱是「AI 輔助的開發」。感覺上,就是程式碼自動完成的加強版了~
以物件的自動完成來說,以往是會列出所有可以使用的可用的成員函式、變數,按照字母排序出來,讓開發者來找自己需要的。
而新的 IntelliCode 呢,則是會去分析內容,提供加了星號的建議,把可能會用到的東西放在最前面。
至於這些資料的來源呢,微軟號稱是「根據 GitHub 上數千項開放原始碼專案產生建議」;而如果有需要,也可以針對自己的程式庫來建立模型使用。
另外,官方也有提到除了自動完成外,他也可以讓開發者更快找出問題、或是標示出重點程式碼;不過這些功能,可能都要等玩久一點後,才知道到底是不是真的有幫助了。
不過,Heresy 在玩的時候是有碰到一點小問題:
- 不知道為什麼,Heresy 裝完 VisualStudio 2019 後,這個套件沒有預設安裝進來,需要另外安裝。
- 在要建立自己的模型的時候,C++ 的程式碼被當成 C# 的,而且沒辦法成功建立。
官方網頁:https://visualstudio.microsoft.com/zh-hant/services/intellicode/
Visual Studio Live Share
其中,Visual Studio Live Share 的部分其實微軟已經推出預覽版好一段時間了,Heresy 之前也有簡單地介紹過。
他基本上就是一個遠端偕同工作的架構,允許多個開發者,可以在各自的電腦上、編輯同一個專案的程式,並且可以即時看到遠端修改的變化。
這項功能對於開發者不再一起,卻需要討論程式的時候,應該是有相當的幫助的。
官方網頁:https://visualstudio.microsoft.com/zh-hant/services/live-share/
更完整的更新,則可以參考官方的《Visual Studio 2019 Release Notes》和《What’s new in Visual Studio 2019》;Heresy 這邊簡單列一些個人覺得比較會注意到的。
-
加入「解決方案篩選器」(Solution Filter),可以控制要讀取那些專案。
-
加強搜尋功能,包含選單、命令、程式內的選項、套件安裝等
-
在偵錯的時候,自動變數、區域變數、監看式等視窗加入了搜尋的功能,可以更快地找到要看的物件(參考)。
-
在監看式的變數,可以透過在變數名稱後面加上「,」,來指定要用什麼格式來顯示他的值。
C++ 的部分
另外,由於個人主要是以撰寫 C++ 的程式為主,所以其實個人感到最有興趣的,還是 C++ 的部分。
在 Visual C++ 的部分,MSVC2015 的內部版本編號是 14.0,MSVC2017 則是 14.1,這次的 VC2019 也只是改次版號,變成 14.2。
而根據官方的說法(網頁),這次的升級應該也是 binary compatibility,可以無痛升級的。
相關的介紹,可以參考:
- C++ Productivity Improvements in Visual Studio 2019 Preview 2
- MSVC Backend Updates in Visual Studio 2019 Preview 2: New Optimizations, OpenMP, and Build Throughput improvements
- In-editor code analysis in Visual Studio 2019 Preview 2
- New Code Analysis Checks in Visual Studio 2019: use-after-move and coroutine
可以看到,這邊加入了許多快速修正的功能,包括加上 header、分號、namespace 等等,有的功能應該算是滿實用的。
另外,在程式碼分析的部分,也做了不少強化,應該可以加強程式的正確性。
C++ OpenMP SIMD
另外,個人之前看官方部落格的時候,其實個人感到最有興趣的,是官方終於號稱的「支援 OpenMP SIMD」了!這邊官方的文章是《SIMD Extension to C++ OpenMP in Visual Studio》。
實際上 OpenMP 算是一個最簡單好用的程式平行化的架構,目前其規範已經推進到 5.0 了(參考),但是很遺憾的是,就算是上一版的 VisualStudio 2017,都還是只支援古老的 OpenMP 2.0…儘管很多人像微軟反映希望可以更新他的支援標準,但是微軟都沒給出正面的回應。
而 VisualStudio 2019 終於開始實驗性地,更新了對 OpenMP 的支援!
OpenMD SIMD 是 OpenMP 4.0 加入的功能,基本上就是把迴圈向量化、使用 CPU 向量指令集來加速的功能;基本上就和之前 Visual Studio 提供的向量化指令 #pragma vector 類似。
他的簡單寫法大概會是像下面的樣子:
#pragma omp simd for (i = 0; i < count; i++) { a[i] = b[i] + 1; }
而在編譯的時候,要加上 -openmp:experimental 這個參數才行。
不過比較討厭的是,Heresy 本來還期望這次的更新是把 OpenMP 的支援從 2.0 升級到 4.0,但是看來實際上只是 OpenMP 2.0 + SIMD 而已…像是 task 等 3.0 之後的指令,Visual C++ 看來都還是不支援的…
這篇大概就先這樣了。之後等有發現什麼有趣的新功能,再來看看要不要寫吧~
其他:
-
Windows 版的版本編號是 16.0,而同時微軟也推出了 VisualStudio 2019 for Mac(8.0);不過 Heresy 沒在用 Mac,這部分就跳過了。
-
這次的 Extension 不知道是不是和 2017 相容?剛裝好就有 Qt VS Tools 可以用了。
-
NVIDIA 的 CUDA 10.1 雖然不會把相關檔案安裝到 VisualStudio 2019 的資料夾,但是自己把對應的 BuildCustomizations 檔案複製過去,是可以編譯的~不像之前一樣換個版本就完全不給用。(參考)
-
2017 檔案路徑:C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDEVCVCTargetsBuildCustomizations
-
2019 檔案路徑:C:Program Files (x86)Microsoft Visual Studio2019EnterpriseMSBuildMicrosoftVCv160BuildCustomizations
-
-
手邊之前用 VisualStudio 2017 建置的函式庫看來大部分都可以用,不過不知道為什麼 libpng 會觸發到 C2220 的錯誤(將警告視為錯誤,參考),導致無法完成連結;看來只要重新建置 libpng 就可以了?