Visual Studio 2017 新功能探索
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
全新安裝體驗
Installation Experience
Visual Studio 2017 安裝特色
• 更輕量的安裝
– 更小更快的安裝過程
• 完全客製化安裝
– 完全依據您的需要選擇必要的開發元件
• 更低的系統衝擊
– 安裝過程只有極少量的系統檔案與系統機碼被建立
– 各版本之間 (2015, 2017 RC, 2017 RTM, …) 互不影響
3
Visual Studio 2017 版本
• Visual Studio Community 2017
– 支援版控、語法高亮、開發偵錯、超過 20 種程式語言
– 可開啟任意資料夾 (無須任何方案檔或專案檔)
• Visual Studio Professional 2017
– 支援 CodeLens (程式碼透視鏡)
• Visual Studio Enterprise 2017
– 支援完整的 DevOps 開發體驗
– 支援 Live Unit Testing
– 支援 Live Architecture Dependency Validation
4
程式碼導覽功能
Code Navigation
結構輔助線 (Structure Guide Lines)
上一個方法、下一個方法
• 建議自訂快速鍵
– Alt + ↑ (上一個方法)
– Alt + ↓ (下一個方法)
全新的「移至」功能 ( Go To)
• 快速搜尋
– Ctrl + ,
– Ctrl + T
• 跳至指定行號
– Ctrl + G
尋找所有參考 (Find All References)
• 全新的介面讓搜尋結果
更加清楚明瞭
• 快速鍵
– Shift+F12
開啟資料夾模式
Open Folder
可以開啟任意資料夾的專案
可從檔案總管開啟任意資料夾
可開啟無須方案或專案檔的專案
• 開發時期依然支援以下功能
– 語法高亮
– 程式碼導覽
• 搭配 Ctrl-, 或 Ctrl-T 使用
– 程式碼偵錯
• C++ (CMake)
• Node.js - JavaScript/TypeScript
• Python
– 智慧型感知輸入 (IntelliSense)
解決方案總管 - 資料夾檢視
• 限定方案總管顯示範圍 (右圖)
• 在檔案總管中開啟資料夾
• 開啟開發人員命令提示字元
• 輕易切換不同模式 (下圖)
– 資料夾檢視
– 方案總管檢視
資料夾專案的啟動設定
• 設定方法
– 在可啟動執行的檔案
按下滑鼠右鍵,選擇
【設定為啟動項目】
資料夾專案的偵錯設定
• 設定方法
– 只要在可偵錯的檔案上
按滑鼠右鍵,選擇
【偵錯並啟動設定】
即可進行設定!
• 設定檔路徑
– .vs/launch.vs.json
– 支援 IntelliSense
資料夾專案的工作設定
• 設定方法
– 只要在可任意檔案上
按滑鼠右鍵,選擇
【設定工作】即可!
• 設定檔路徑
– .vs/tasks.vs.json
– 支援 IntelliSense
tasks.vs.json 範例
{
"version": "0.2.1",
"tasks": [
{
"taskName": "工作-app",
"appliesTo": "app.js",
"type": "command",
"command": "cmd",
"args": ["/C", "npm", "test"]
}
]
}
利用 EditorConfig 自訂文字編輯器設定
EditorConfig
全新 EditorConfig 編輯器設定
• EditorConfig 是在開源社群常見的編輯器設定檔
– 預設檔名:.editorconfig
– 檔案路徑:通常位於專案或方案根目錄下
• 使用方式
– 建立 .editorconfig 編輯器設定檔
– 將檔案加入版本控制系統並與團隊共用一致的編輯器設定
– 開發人員在寫 Code 的時候,編輯器會自動提示格式錯誤
• 設定檔範例
– https://github.com/dotnet/roslyn/blob/master/.editorconfig
支援的 EditorConfig 屬性
• 目前 Visual Studio 2017 RC 支援的屬性如下
– root = true
• 宣告此 .editorconfig 是否為最上層設定檔
– indent_style = space
• 設定縮排的風格 ( space 或 tab )
– indent_size = 4
• 設定縮排的空白字元數 ( 僅 indent_style = space 時有用 )
– tab_width = 4
• 設定一個 tab 符號的寬度
– end_of_line = crlf
• 設定斷行符號 ( cr , lf , crlf )
– charset = utf-8
• 設定檔案的文字編碼 ( latin1, utf-8, utf-16be, utf-16le )
– .NET Code Style Settings For Editorconfig
已知的問題 (Known Issues)
• EditorConfig 目前不支援 XML 檔案類型 (VS2017 RC)
• 目前 XAML 編輯器支援 .editorconfig 以下選項:
– indent_style
– indent_size
– tab_width
• 目前 .editorconfig 不支援的選項:
– insert_final_newline
– trim_trailing_whitespace
相關連結
• EditorConfig
– EditorConfig
– EditorConfig Plugins
– EditorConfig (GitHub)
– EditorConfig (@EditorConfig) | Twitter
• 微軟文件
– Code Style Configuration in the VS2017 RC Update
– Create portable, custom editor settings | Microsoft Docs
• 相關文章
– Maintaining Consistent Coding Conventions With EditorConfig
- Trey Hunner
– Use EditorConfig to Maintain Consistent Coding Styles between Different
Editors and IDEs
漫遊擴充管理員
Roaming Extension Manager
漫遊擴充管理員
將擴充套件安裝於多台主機
• 適用於一個開發人員擁有多台開發環境
• 必須先登入 Visual Studio 2017 ( Microsoft 帳戶 )
• 漫遊擴充管理員 (Roaming Extension Manager)
– 可將常用擴充套件設定「開始漫遊」
漫遊擴充管理員圖示
• 標示為漫遊的擴充套件且尚未安裝
• 標示為漫遊的擴充套件且已經安裝
• 已安裝的套件,但沒有加入到漫遊清單中
強大的 IntelliSense 與編輯器功能
Enhanced IntelliSense and Code Editor Features
全新的 IntelliSense 功能增強
• IntelliSense 新增 Icon Tray 可篩選提示結果
其他 C# / VB 編輯器功能增強
• 將檔案名稱更名為型別名稱 ( Ctrl+. )
• 將型別名稱更名為檔案名稱 ( Ctrl+. )
• 將 String.Format 轉換成 C# 6 的字串內插語法
• 在字串中間按下 Enter 斷行會自動拆成兩個字串
• 可把現有屬性 (Property) 自動轉成方法 (Method)
• 使用程式碼導覽功能現在支援模糊比對能力
• 程式碼自動引用參考現在也支援模糊比對能力
其他 JavaScript 編輯器功能增強
• 預設已啟用 JavaScript Language Service 能力
– 支援 React 常用的 JSX 語法
– 支援大部分 ES2016 語法
• generators
• modules
• decorators
• …
全新的偵錯能力 - Run to Click
Run to Click
減少設定中斷點的次數
啟用與停用 [執行至所按處]
• 執行至所按處 ( Run to Click )
全新的例外狀況處理
Exceptional Exception Handling
更清楚的 NullReferenceException
• 可以在一個陳述式中點出確切的例外狀況
設定例外發生時的中斷點條件
即時單元測試開發
Live Unit Testing
即時單元測試開發 (Live Unit Testing)
• 主要特性
– 即時呈現單元測試結果與程式碼測試覆蓋率
– 僅支援於 Visual Studio 2017 企業版
– 支援 C# / VB 專案類型
Live Unit Testing 圖示
• 尚未被任何單元測試涵蓋
• 已涵蓋單元測試,但未通過
• 已涵蓋單元測試,且已通過
內建支援三種單元測試框架
• 支援的單元測試框架與工具版本
– MSTest (Visual Studio Unit Testing Framework)
• MSTest.TestAdapter 1.1.4-preview
• MSTest.TestFramework 1.0.5-preview (or higher versions)
– xUnit
• xunit.runner.visualstudio version 2.2.0-beta3-build1187
• xunit 2.0 (or higher versions)
– NUnit
• NUnit3TestAdapter version 3.5.1
• NUnit version 3.5.0 (or higher versions)
相關連結
• Live Unit Testing in Visual Studio 2017 RC
• Unit Test Your Code
• MSTest.exe command-line options
即時相依性檢測
Live Dependency Validation
啟用即時相依性檢測
新增相依性驗證圖表 - 步驟 1
• [架構] / [新增相依性驗證圖表]
新增相依性驗證圖表 - 步驟 2
• 新增 [相依性驗證] 專案
新增相依性驗證圖表 - 步驟 3
• 更新專案中的 NuGet 套件以支援相依性驗證圖表
新增相依性驗證圖表 - 步驟 4
• 設計相依性圖表 ( Layer Diagram )
從錯誤清單視窗驗證架構相依性
相依性驗證其實是個分析器
50
相依性驗證圖表必須加入到專案中
• 在 *.csproj 專案檔中有個隱藏的專案項目 (方案總管看不見)
• 沒有這個隱藏的專案項目就會出現以下錯誤
51
相關連結
• Live Dependency Validation in Visual Studio 2017 |
Microsoft Application Lifecycle Management
• Live architecture dependency validation in Visual Studio
"15" Preview 5
• UML Designers have been removed; Layer Designer now
supports live architectural analysis
輕量型解決方案載入
Lightweight Solution Load
輕量型解決方案載入
• 主要用途
– 加快大型方案 (數十個專案) 的載入速度
– 大幅減少載入大型方案的記憶體耗用情況
• 注意事項
– 目前是實驗性功能,
預設不啟用!
– 啟用時預設專案
不會自動還原
NuGet 套件
載入速度比較
啟用輕量型解決方案載入 (全域)
啟用輕量型解決方案載入 (方案)
• 啟用步驟
1. 在方案總管中點選方案
2. 按下 F4 開啟屬性視窗
3. 調整「輕量型載入」屬性
相關連結
• Shorter Solution Load Time in Visual Studio "15"
• Faster Visual Studio "15" Startup | The Visual Studio Blog
聯絡資訊
• The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
– http://blog.miniasp.com/
• Will 保哥的技術交流中心 (臉書粉絲專頁)
– http://www.facebook.com/will.fans
• Will 保哥的噗浪
– http://www.plurk.com/willh/invite
• Will 保哥的推特
– https://twitter.com/Will_Huang

Visual Studio 2017 新功能探索 (Study4.TW)

Editor's Notes

  • #56 https://blogs.msdn.microsoft.com/visualstudio/2016/10/11/shorter-solution-load-time-in-visual-studio-15/