Visual Studio 2015
開發與偵錯技巧 (保哥課程分享)
Outline
- 地表最強 IDE
- Solution & Project
- Tools Window
- 常用快速鍵
- Rapid Development Tips & Tricks
- MSBuild
- 分析工具
- DDL & PDB
- 效能監控
- VS Extension Tools
認識 Visual Studio 版號
釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係
Solution & Project
Solution
- 有 1 到多個專案
- 方案資料夾
Solution property
- Startup Project
MSBuild & Project File
MSBuild
(Microsoft Build Engine)
建置與部專案
Project File
- 每個專案都有一個專案檔
- 不同專案類型有不同的專案副檔名 (*.csproj, *.vbproj, *.dbproj)
- 每個專案檔都是 MSBuild XML schema 格式的定義檔
Tools Window
工作窗格
認識工作窗格
- 方案總管
- Team Explorer
- 伺服器總管
- SQL Server 物件總管
- 書籤視窗
- 呼叫階層
- 類別檢視
- 程式碼定義視窗
- 物件瀏覽器
移動與配置工具窗格
「容器」可以停駐工具窗格
- 視窗
【上、下、左、右、中間】 - 容器
【上、下、左、右、中間】
視窗配置技巧
-
進階視窗配置技巧 (vs2015 才有)
– 儲存視窗配置
– 套用視窗配置
– 管理視窗配置
– 重設視窗配置 -
常用鍵盤快速鍵
– ESC (回到編輯器視窗)
– Shift + ESC (關閉工具窗格)
– Ctrl + Alt + 數字 (切換視窗配置)
– Alt + Shift + Enter (切換全螢幕)
TOOLS / Options...
很多,多玩幾下就知道了...
Rapid Development Tips & Tricks
快速開發
視覺化工具掌握程式碼狀況
-
CodeMaid Spade
快速一覽目前 C#/VB 原始碼架構、可排序、可排版原始碼
- Javascript Parser
- Code Map, UML 圖
(only Visual Studio Enterprise)
區塊選取與編輯功能
- 可一次編輯多行 (區塊選取功能)
- 支援零寬度選取,可多行同時輸入
- 快速鍵
– Alt + Shift + 鍵盤方向鍵
– Alt + 滑鼠左鍵選取
程式碼片段 (Code Snippets)
- – if、else、for、forr、foreach、do、while、cw
– namespace、class、interface、struct、enum
– ctor、using、prop、propfull、try、tryf、switch - CSS, HTML(要打 <), JavaScript 也都有
- Code Snippets Manager
Emmet
Html 快速產生器
鍵盤快速鍵
- 偵錯 (F6, F9, F10, F11)
- 搜尋 (Ctrl + F, Ctrl + Shift + F)
- IntelliSense (Ctrl + J, Alt + 右)
- 智慧動作 (Ctrl+.)
- 尋覽 (F12, Alt+F12, Ctrl+-, Ctrl+,)
- 其他 (Ctrl+C, X, V, Ctrl+M+M, F2)
進階中斷點設定技巧
- Condition 條件
- Action 動作
- Edit Label 編輯標籤
msdn: Using Breakpoints
活用組態管理員
Configuration Manager
- 主要用於執行 MSBuild 設定與自動上版
- Web.config Transform
- 活用條件式編譯參考保哥 blog
MSBuild 架構
MSBuild
專案檔結構
<Project>
<PropertyGruop>
<ItemGruop>
<Target>
<task>
MSBuild.exe 工具
-
基本建置命令
-
可以指定 MSBuild 專案檔即可開始建置
msbuild.exe Web1.proj -
預設會從你在 <Project> 設定的 DefaultTargets 開始執行
-
-
建置時指定額外的屬性
-
例如:指定你要將 $(Configuration) 屬性設定為 Debug
msbuild.exe Web1.proj /p:Configuration=Debug -
例如你要執行部署任務時,可能會想指定 $(ServerName) 主機位址
msbuild.exe Web1.proj /p:ServerName=INTRA\TESTWEB1
-
-
建置時指定特定的 Targets 執行任務
-
例如你只要執行 MvcBuildViews 目標時 ( /t: 或 /target: 皆可 )
msbuild.exe Web1.proj /target:MvcBuildViews
-
分析工具
靜態程式碼分析
- 自動從原始碼的角度,分析所有非編譯時期的各種潛在問題,設計問題/效能問題/最佳實務等,提高 Code Review效率。
- Code Analysis (程式碼分析)
- Code Metrics (程式碼度量)
- Code Clone Analysis (重複程式碼)
Code Analysis 程式碼分析
- Visual Studio 2015 已有內建規則集
- 透過 NuGet 安裝分析規則集
- Microsoft.AnalyzerPowerPack
- codecracker
- SonarLint
- 透過 Extension 安裝套件
- C# Essentials
Code Metrics 程式碼度量
- Maintainability Index 可維護性指數
- Cyclomatic Complexity 循環複雜度
- Depth of Inheritance 繼承深度
- Class Coupling 類別結合度
- Lines of Code 程式碼行數
Code Clone Analysis
重複程式碼
(旗艦版才有)
效能監控
頂級版本的才有
程式碼剖析
msdn 官方教學
IntelliTrace
紀錄和追蹤程式碼
DDL & PDB
重要觀念
-
每次 .NET 應用程式進行建置都會輸出
-
DLL:保存所有 .NET 的 metadata ( IL source code, version, … )
-
PDB:保存原始碼檔名與行號資訊以及所有區域變數名稱。(又稱為『符號檔』)
-
每次建置 DLL 都會在內部產生一組新的 GUID 編號,該編號也會寫入 PDB
檔案中,且無法變更! -
即便你原始碼沒有異動,只要有做建置動作,這組 GUID 編號每次建置都會
完全不一樣!
PDB 注意事項
- PDB 跟原始碼一樣重要!
- 每一個 DLL 都必須有個相對應的 PDB 才能進行偵錯!
- 在正式機進行偵錯時
- 若沒有相對應的 pdb 將會讓偵錯變得異常困難!
- 可以準備一台 Symbol Server
- 用來保存所有的 public build 產生的 pdb 檔案
- Visual Studio 或 WinDBG
- 都可以指定符號檔路徑,工具會自動找到相對應的 pdb 檔案
.NET Source code debug
VS Extension Tools
vs2015 only
- C# Essentials
- Web Extension Pack
- Bundler & Minifier
-
Developer Assistant
(很多提示,吃 pc 效能)
建議可以裝得
THE END
以上資料來自保哥課程筆記
還有自摸出來的
Visual Studio 2015 開發與偵錯技巧
By Sean Chen
Visual Studio 2015 開發與偵錯技巧
保哥 vs2015 開發與偵錯課程分享
- 3,628