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

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

還有自摸出來的

Made with Slides.com