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 編輯標籤

活用組態管理員 
Configuration Manager

 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

建議可以裝得

 

      如果有錢的話可以裝der

THE END

以上資料來自保哥課程筆記

還有自摸出來的

Visual Studio 2015 開發與偵錯技巧

By Sean Chen

Visual Studio 2015 開發與偵錯技巧

保哥 vs2015 開發與偵錯課程分享

  • 3,628