Below you will find pages that utilize the taxonomy term “Visual Studio”
Posts
BuiltinCmd - Integrate windows cmd terminal into Visual Studio
BuiltinCmd 是 Visual Studio 的擴充套件,能整合命令列視窗至 Visual Studio。
透過 Extension Manager 安裝套件。
將 Visual Studio 重啟。
點選 [View | Other Windows | Toggle BuiltinCmd] 主選單選項,或是按下熱鍵 Ctrl + Shift + T 即可開啟 BuiltinCmd 視窗。
Link BuiltinCmd - Visual Studio Marketplace
read morePosts
>-
Exception Breaker 是 Visual Studio 的套件,能更方便快速的切換 CLR Exception 是否要中斷。
在開發時為了補獲 First chance exception 並中斷,時常要對 CLR Exception 的 Exception Setting 設定做切換,每次都要開啟 Exception Setting 去切換/還原設定十分的麻煩。該套件提供了工具列按鈕與熱鍵,讓切換上更為方便快速。
該套件可透過 Extension Manager 安裝。
套件安裝完需要重啟 Visual Studio。
Visual Studio 重啟後進入除錯模式,即可看到 Exception Breaker 套件的按鈕,按下工具列按鈕或是熱鍵 Ctrl + E, Ctrl + B 即可進行 CLR Exception 中斷設定的切換。
Link Exception Breaker - Visual Studio Marketplace
read morePosts
Visual Studio 2017 - Live unit testing
要啟動 Visual Studio 2017 Live Unit Testing 功能,可點選 [Test | Live Unit Testing | Start] 主選單選項。
啟動後單元測試會持續在背景運行。
可在開發程式時即時看到測試的狀況與覆蓋情形。
需注意的是這功能需要 MSTest V2 才能啟用,舊測試專案需要移除 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的參考。
加入 MSTest.TestFramework 套件。
加入 TestAdapter 套件。
最後調整命名空間即可。
read morePosts
Visual Studio 2017 - Improved Code Navigation
Visual Studio 2017 對程式碼的巡覽做了些強化,[Edit | Go To] 主選單選項內有著所有的巡覽功能。
像是 Go To All... (熱鍵 Ctrl+T)
Go To Line... (熱鍵 Ctrl+G)
Go To File... (熱鍵 Ctrl+1, Ctrl+F)
Go To Type... (熱鍵 Ctrl+1, Ctrl+T)
Go To Symbol... (熱鍵 Ctrl+1, Ctrl+S)
Go To Member... (熱鍵 Ctrl+1, Ctrl+M)
也可以記住搜尋框認的關鍵字,像是 Go To Line... 是用 :、Go To File... 是用 f、Go To Type... 是用 t、Go To Symbol... 是用 #、Go To Member... 是用 m,這樣會更方便使用。
read morePosts
Visual Studio 2017 - Find all references
Visual Studio 2017 針對 Find all references 視窗做了些強化,在要查詢 Reference 的地方按下滑鼠右鍵,在彈出的滑鼠右鍵快顯選單中點選 Find All References 選單選項,將 Find all references 視窗開啟。
開啟後會看到該視窗跟 Visual Studio 2017 以前有些許不同,上方工具列有些差異,結果也改以群組的方式呈現。
上方工具列有下拉式選單可供我們選擇是找尋整個方案、開啟的文件、當前專案、當前文件。
也提供向前巡覽 reference (也可用熱鍵 Shift + F8 觸發)。
向後巡覽 reference (也可用熱鍵 F8 觸發)。
也有下拉選單可以改變群組的方式,像是預設的 Project then Definition 群組,會先以專案再以程式碼的定義去群組:
Definition Only 會以程式碼的定義去群組:
Definition then Project 會先以程式碼定義再以專案去群組:
Definition then Path 會先以程式碼定義再以專案路徑去群組:
Definition, Project then Path 會先以程式碼定義再以專案最後以專案路徑去群組:
不同的群組方式適用於不同的使用情境,可視需求調整使用。
若有需要進一步篩選,可利用上方的搜尋框。
若要保留搜尋結果供後續使用,可按下 Keep Result 按鈕。
這樣再次搜尋 Reference 時就不會重用本來的視窗。
而會使用新的視窗。
read morePosts
Visual Studio 2017 - Roaming Extension Manager
Visual Studio 2017 以前安裝的 Extension 無法同步,所以在不同電腦間 Extension 都需要自行安裝。
Visual Studio 2017 以後新增了 Roaming Extension Manager,可用來設定要同步的 Extension。只要開啟 Extensions and Updates 視窗,切到 Roaming Extension Manager 頁面,在想要同步的 Extension 後面按下 Start Roaming 按鈕,指定的 Extension 即可同步到不同電腦。
read morePosts
Visual Studio 2017 - Modify extensions in bulk
Visual Studio 2017 以後使用 Extensions and Updates 視窗進行 Extension 的修改。
修改的 Extension 會被加入排程,排程的 Extension 可以在 Extensions and Updates 視窗的右下角看到,若有需要也可以將排程刪除。
接著將 Visual Studio 關閉。
排程的 Extension 即會開始運行對應的動作。
read morePosts
Visual Studio 2017 - Reattach to process
Visual Studio 2017 以前如果要重新附加到相同的處理序,我們需要自行用 Attach to Process 對話框再次附加相同的處理序,或是透過 Visual Studio 2017 的外掛直接重新附加處理序。
Visual Studio 2017 以後新增 Reattach to process 功能,只要之前附加過處理序,[Debug | Reattach to Process…] 主選單選項即會浮現,若有需要則可點選該主選單選項,或是用熱鍵 Shift+Alt+P,進行處理序的重新附加。
read morePosts
Visual Studio 2017 - Match highlighting
Visual Studio 2017 以前在使用 IntelliSense 時,有時我們會搞不清楚出來的成員是因為匹配到什麼才會顯示出來。
Visual Studio 2017 以後支援 Match highlighting,當使用 IntelliSense 時匹配到的字元會被 Highlight,可以清楚知道為什麼 IntelliSense 會將該成員列出。
read morePosts
Visual Studio 2017 - IntelliSense filtering
Visual Studio 2017 以前 IntelliSense 是不具備 Filtering 功能的,必須從眾多成員中挑選出所要選用的,當成員過多時這問題會更加嚴重。
Visaul Studio 2017 加入 IntelliSense filtering,在 IntelliSense 對話框的下半部增加了過濾的按鈕,能針對成員類型進行過濾。
像是可以設定只顯示屬性。
可以設定只顯示方法。
可以設定只顯示擴充方法…等等。
read morePosts
Visual Studio 2017 - Run to click
Visual Studio 2017 以前,在除錯時若要讓斷點繼續向下運行至指定位置,我們需要在指定位置設定斷點後讓他向下運行,或是直接在指定位置上按下滑鼠右鍵,點選 Run to cursor 滑鼠右鍵選單也可以。
在 Visual Studio 2017 以後新增了 Run to click 的功能,提供我們另一個選擇。使用上要先設定個斷點進入除錯模式,讓它中斷在設定的斷點上。
接著將滑鼠移到指定位置上,指定位置的前方會浮現個小圖示,滑鼠點擊該圖示即可運行至指定位置後中斷。
read morePosts
Visual Studio 2017 - Structure visualizer
Visual Studio 2017 以前,在編寫程式時有時我們會需要找一下程式碼中的刮號,確定我們在改的區塊是否正確。Visual Studio 2017 新增 Structure visualizer 功能,能讓我們更容易知道所修改的區塊是哪。
該功能預設應該是開啟的,若未開啟可開啟 Options 視窗,切到 [Text Editor | General] 頁面,將 Show structure guide lines 選項勾選。
在程式碼這邊應該就會看到對應的括號之間出現了 Structure Guide Lines。接著只要將滑鼠移至 Structure Guide Lines 上,Structure visualizer 即會浮現,我們可以清楚的了解到所在修改的區塊位置。
read morePosts
Visual Studio 2017 - Lightweight solution load
Visual Studio 2017 新增 Lightweight Solution load 功能,能 OnDemand 進行專案的載入,特別適用於大型專案的開發。
該功能預設是關閉的,要啟用可開啟選項對話框,切到 [Projects and Solutions | General] 頁籤,勾選 Lightweight Solution load 選項。
將專案載入,乍看起來好像沒什麼太大的變化。
但仔細看方案總管這邊,會發現方案名稱後面多了個 lightweight 字樣。
將方案總管的專案展開,會看到其實專案還沒被載入,展開的同時才開始進行載入。
稍待一下即可載入完成。
read morePosts
Visual Studio 2017 - Attach to Process Filter
在 Visual Studio 2017 以前要在 Attach to Process 對話框中找到要附加的處理序,需要在一堆處理序中挑選。
Visual Studio 2017 針對 Attach to Process 對話框做了強化,新增過濾的功能,便於使用者快速挑選要附加的處理序。
滑鼠點選 [Debug|Attac to Process…] 主選單選項,或是按下熱鍵 Ctrl+Alt+P,叫出 Attach to Process 對話框。
會看到在 Attach to Process 對話框中處理序列表的上方多出了一個搜尋框,將要過濾的字樣填入,下方的處理序列表即會列出過濾後的處理序。
Link Visual Studio 2017 Release Notes
read morePosts
Web Deploy - Publish with Visual Studio
要直接用 Visual Studio 使用 Web Deploy 去做佈署,首先在方案總管的專案上按下滑鼠右鍵,點選 Publish... 滑鼠右鍵選單選項。
在 Publish Web 視窗中選取 Cuetom Profile。
設定 Profile 的名稱。
接著 Publish method 選定 Web Deploy,設定要佈署的 Server 及帳號資訊。
再來選定要建置的 Configuration。
若想在發佈前查看一下會做哪些更動,可透過預覽的功能查看。
沒問題就可以進行發佈的動作。
read morePosts
Visual Studio - Exception of type 'Phx.FatalError' was thrown
如果 Visual Studio 出現 “Exception of type ‘Phx.FatalError’ was thrown” 這樣的錯誤。
可以重新註冊 dll 來修復這問題,不同版本的 Visual Studio 需要註冊不同的 dll。
Visaul Studio Command Visual Studio 2010 regsvr32 “%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\msdia100.dll” Visual Studio 2012 regsvr32 “%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\msdia110.dll” Visual Studio 2013 regsvr32 “%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\msdia120.dll” Visual Studio 2015 regsvr32 “%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\msdia140.dll” 像是筆者出問題的是 Visual Studio 2015,所以要像下面這樣註冊。
註冊完問題就排除了。
Link Error in FxCop Phoenix analysis engine - Stack Overflow FxCop error CA0001 on build server – Altug Sahin’s Blog
read morePosts
Visual Studio - Clone git repository
使用 Visual Studio clone git repository,先將 Team Explorer 視窗開啟。
在 本機 Git 儲存機制 這邊點選 複製 按鈕。
再來要設定欲 clone 的 git repository 位置,以及 clone 下來存放的位置。
填完按下 複製 按鈕開始進行 Clone。
Clone 完成會在 Team Explorer 直接列出該 Repository。
透過滑鼠右鍵快顯選單我們可以用命令提示字元或是檔案總管開啟 Clone 下來的 Repository。
read morePosts
Visual Studio - Move obj folder
Visual Studio 的專案在建置 .NET 專案時會自動建立 Obj 目錄放置中繼檔案,該目錄位置並無直接的設定方式。
如果想要調整該目錄位置,可設定 Project 檔案,在欲生效的 PropertyGroup 中加入 BaseIntermediateOutputPath 元素去指定位置。
... <PropertyGroup> ... <BaseIntermediateOutputPath>..\..\Obj</BaseIntermediateOutputPath> </PropertyGroup> ... ![1.png](1.png) <br/> Link
read morePosts
Visual Studio 15 Preview - Enabling C# 7 Features
Visual Studio 15 Preview 開始支援部分 C# 7.0 的功能,由於尚未完全定案,故並未直接開放,需要做些特別的設定才可將之開啟。
若要啟用需切打開專案的屬性頁,切至建置頁面,在條件式編譯的符號那邊設定 __DEMO__,__DEMO_EXPERIMENTAL__ 即可。
{% img /images/posts/VS15PreviewEnableCSharp7/1.png %}
Link Enabling C# 7 Features in Visual Studio “15” Preview | StrathWeb. A free flowing web tech monologue.
read morePosts
Visual Studio 15 Preview - Exception Helper
Visual Studio 15 Preview 以前,託管的程式會透過 Exception Assistant 提供錯誤資訊。
{% img /images/posts/VS15PreviewExceptionHelper/1.png %}
非託管的程式或是將 Exception Assistant 關閉的話,則是透過 Exception Dialog 提供錯誤資訊。
{% img /images/posts/VS15PreviewExceptionHelper/2.png %}
在 Visual Studio 15 Preview 以後,開發人員可以選擇使用 Exception Helper 來提供除錯資訊,只要開啟選項對話框,切換到偵錯頁面,啟用 Exception Helper。
{% img /images/posts/VS15PreviewExceptionHelper/3.png %}
當例外發生時,錯誤資訊就會改用 Exception Helper,可以看到新的 Exception Helper 訊息精簡許多。
{% img /images/posts/VS15PreviewExceptionHelper/4.png %}
新的 Exception Helper 不會像以往一樣直接蓋在程式碼上面,而且可釘選,查閱程式錯誤時不再那麼綁手綁腳。
{% img /images/posts/VS15PreviewExceptionHelper/5.png %}
如果有 Inner exception,也可以很直接就看到 Inner exception 的訊息,不用特別追進 Detail 查閱。
{% img /images/posts/VS15PreviewExceptionHelper/6.png %}
當然若有需要也是可以查閱到 Detail 的部分。
read morePosts
Visual Studio 15 Preview - Code style enhancement
Visual Studio 15 Preview 針對 Code Style 做了些強化。
在 Visual Studio 2015 Update 2 中,Code Style 只有少少的幾個項目可供設定:
{% img /images/posts/VS15PreviewCodeStyleEnhancement/1.png %}
在 Visual Studio 15 Preview 中這功能完整了許多,添加許多的設定項目,相似的設定會被群組在一起,而且改用下拉清單取代本來的勾選框,設定上也更為清楚直覺。
{% img /images/posts/VS15PreviewCodeStyleEnhancement/2.png %}
{% img /images/posts/VS15PreviewCodeStyleEnhancement/3.png %}
有些設定還可套上嚴重程度,這邊視個人需要下去調整即可,看覺得是 None,Info,Warning,Error 哪個層級都可。
{% img /images/posts/VS15PreviewCodeStyleEnhancement/4.png %}
read morePosts
Visual Studio 15 Preview - Open folder
Visual Studio 15 Preview 開始支援用目錄的方式開啟。
使用上只要點選 [File | Open | Folder…] 主選單選項,選取要載入的目錄即可。
{% img /images/posts/VS15PreviewOpenFolder/1.png %}
{% img /images/posts/VS15PreviewOpenFolder/2.png %}
read morePosts
Visual Studio 15 Preview - Naming style
Visual Studio 15 Preview 開始支援命名規則的檢查。
使用時可開啟選項視窗,切換到 [Text Editor | C# | Code Style | Naming] 頁面,點選右側頁面的 “+” 按鈕,加入新的命名規則。
{% img /images/posts/VS15PreviewNamingStyle/1.png %}
在彈出的命名規則對話框中,我們要先為這個命名規則取個名字,接著點選符號規格後的 “+” 按鈕,設定命名規則要套的範圍。
{% img /images/posts/VS15PreviewNamingStyle/2.png %}
符號規格對話框這邊,我們一樣要給符號規格命名,然後決定命名規則套用的範圍。像是這邊筆者想要對所有方法生效,在符號種類這邊就要選取 method,存取範圍則全部選取。
{% img /images/posts/VS15PreviewNamingStyle/3.png %}
符號規則訂定後,接著要訂定命名樣式,命名樣式這邊一樣要為它命名,然後設定他的前置詞,後置詞,分隔字元,大小寫。像是這邊筆者想要讓所有的方法都用 Pascal 命名,所以這邊將設定調為 Pascal 大小寫名稱。
{% img /images/posts/VS15PreviewNamingStyle/4.png %}
最後要設定的是命名規則的嚴重程度,這邊視個人需要下去調整即可,看覺得是 None,Info,Warning,Error 哪個層級都可。
{% img /images/posts/VS15PreviewNamingStyle/5.png %}
設定好後在撰寫程式時 Visual Studio 就會依照制定的命名規則下去檢查。
{% img /images/posts/VS15PreviewNamingStyle/6.png %}
read morePosts
Visual Studio 2015 - Diagnostic Tools
Diagnostic Tools 是 Visual Studio 2015 的新功能,能幫助開發人員快速的找出效能上的問題。
該功能預設除錯時會自動帶出,畫面會像下面這樣。
{% img /images/posts/DiagnosticTools/1.png %}
一邊運行,一邊就會將 CPU、記憶體、與 Event 的狀態帶出。有效能問題開發人員可以即早發現。像這邊的記憶體曲線看起來雖然是平的,但是可以看到有很多次的 GC 出現,這就是需要進行調整的。
{% img /images/posts/DiagnosticTools/2.png %}
記憶體這邊的診斷上我們可以用快照比對分析。只要簡單的進行快照,Diagnostic Tools 就會將兩個快照間的差異清楚的呈現。像是這邊就可以看到物件數跟 Heap 大小有上升的趨勢。進一步點擊,我們可以查看是被哪些物件佔用的,增加的又是哪些物件。
{% img /images/posts/DiagnosticTools/3.png %}
Link Performance and Diagnostic Tools in Visual Studio 2015 - Microsoft Application Lifecycle Management - Site Home - MSDN Blogs Visual Studio 2015 Diagnostics Investments - The Visual Studio Blog - Site Home - MSDN Blogs
read morePosts
Visual Studio 2015 - New Exception Settings Window
在使用 Visual Studio 對 .NET 程式進行除錯時,有時候我們會需要對 Exception Setting 進行些調整,以便快速的找出問題發生的點。
但是以往的 Exception Setting 是以對話框形式呈現,開關設定十分的不便,且不具搜尋過濾的功能,要找到指定的設定很不容易。
這樣的問題在 Visual Studio 2015 獲得了改善,Exception Setting 改以 Window 方式呈現能方便我們隨時進行調動,也新噌了搜尋與過濾的功能便於快速找到指定的設定。
舉個例子來說,今天我們的程式碰到了個不如預期的問題,我們的程式會被導到例外被攔截的位置。
{% img /images/posts/ExceptionSettingWindowInVS2015/1.png %}
但例外被攔截的位置並非我們所關注的地方,此時我們會調整 Exception Setting 讓 Common Language Runtime Exceptions 設定被勾選,這樣因為可以攔截到 First chance exception,所以程式會改停在錯誤實際發生的位置。
{% img /images/posts/ExceptionSettingWindowInVS2015/2.png %}
若要細部指定特定的例外,像是 NullReferenceException,可以直接透過搜尋找到對應的設定。
{% img /images/posts/ExceptionSettingWindowInVS2015/3.png %}
針對非系統提供的例外,這邊也允許自行加入設定。
{% img /images/posts/ExceptionSettingWindowInVS2015/4.png %}
Link The New Exception Settings Window in Visual Studio 2015 - Microsoft Application Lifecycle Management - Site Home - MSDN Blogs Understanding Exceptions while debugging with Visual Studio - Microsoft Application Lifecycle Management - Site Home - MSDN Blogs
read morePosts
Code Cracker
Code Cracker 是 Roslyn analyzer 的 Library,有點類似 FxCop 的 Rule,依不同的範疇實做了很多相關的檢查,可以看到有 Design、Globalization、Maintainability、Naming、Performance、Portabili、Security …等。雖然還未完全實作完畢,但目前已經相當多的檢查 Rule 了。
{% img /images/posts/CodeCracker/1.png %}
安裝上一樣是提供 VSIX 或是 NuGet Package 兩種,若是要套到所有專案,可直接透過 Extension and Updates 安裝。
{% img /images/posts/CodeCracker/2.png %}
若是只要套用到單一專案,可直接透過 NuGet 安裝。不論是要用 NuGet 的 GUI 介面。
{% img /images/posts/CodeCracker/3.png %}
或是直接透過 NuGet 命令都可以。
Install-Package CodeCracker.CSharp -IncludePrerelease Install-Package CodeCracker.VisualBasic -IncludePrerelease 用 NuGet 安裝的話,Analyzer 會出現在方案總管的 References\Analyzers 節點下。
{% img /images/posts/CodeCracker/4.png %}
展開 Analyzer 節點可進一步看到支援的 Rule。
{% img /images/posts/CodeCracker/5.png %}
read morePosts
Visual Studio 2015 - New Breakpoint Configuration Experience
Visual Studio 2015 在除錯功能上做了一些改進,其中一項就是 New Breakpoint Configuration Experience。
以往在設定中斷點時,中斷點的設定視窗是彈跳出來的,設定時要參考程式碼不易,且各個設定雖然可以合併使用但卻是分開的設定視窗。Visual Studio 2015 將之做了個調整,使用類似 Peek Definition 的作法,並將設定整合,讓設定可在一個地方一次設完且一目了然。
使用上只要將滑鼠移至斷點之上,按下浮現的設定按鈕。
{% img /images/posts/NewBreakpointExperienceInVS2015/1.png %}
類似 Peek Definition 的設定視窗會跑出來,可看到之前的設定都在這邊可以一次設完,像是 Hit Condition 與 Count Condition。
{% img /images/posts/NewBreakpointExperienceInVS2015/2.png %}
追蹤點的設定也不例外。
{% img /images/posts/NewBreakpointExperienceInVS2015/3.png %}
因為是用嵌入的方式去做設定,所以設定完在除錯時若有需要,檢視上也比較容易。
{% img /images/posts/NewBreakpointExperienceInVS2015/4.png %}
Link Debugging Improvements in Visual Studio 2015 | Visual Studio Toolbox | Channel 9 New Breakpoint Configuration Experience in Visual Studio 2015 - Microsoft Application Lifecycle Management - Site Home - MSDN Blogs
read morePosts
Visual Studio 2015 - Support for debugging lambda expressions
Visual Studio 2015 以前,無論是透過監看視窗還是快速監看視窗,在除錯時都無法針對 Lambda 語法進行偵錯,除錯上很不方便。
{% img /images/posts/VS2015DebugLambda/1.png %}
{% img /images/posts/VS2015DebugLambda/2.png %}
在 Visual Studio 2015 以後,這問題獲得了改善,針對 Lambda 語法的除錯進行了支援。不僅解決了除錯上的困擾,要在除錯時用 Linq 拉些額外的資料來看也更為方便了。
{% img /images/posts/VS2015DebugLambda/3.png %}
{% img /images/posts/VS2015DebugLambda/4.png %}
read morePosts
.NET Portability Analyzer Extension
.NET Portability Analyzer Extension 是微軟出的 Visual Studio 擴充套件,能偵測程式是否具備 Portability,並針對不具 Portability 的地方提供對應的修改建議,讓開發人員在做跨平臺的開發上更加的便利。
{% img /images/posts/PortabilityAnalyzerExtension/1.png %}
Channel9 這邊有相關的介紹影片,建議可以稍微瀏覽一下,可以幫助我們快速上手。
使用前記得先將擴充套件裝上。
裝好後需先至 Options 這邊設定所要分析的平臺。
{% img /images/posts/PortabilityAnalyzerExtension/2.png %}
在使用上,該擴充套件有兩種不同的使用方式。一種是對選取的組件進行分析,透過 [Analyze/Analyze Assembly Portability…] 主選單選項去觸發。
{% img /images/posts/PortabilityAnalyzerExtension/3.png %}
{% img /images/posts/PortabilityAnalyzerExtension/4.png %}
產生的報表能顯示出程式在各平台的支援程度,及細部的支援比較。
{% img /images/posts/PortabilityAnalyzerExtension/5.png %}
另一種則是對選取的專案進行分析,透過方案總管的滑鼠右鍵選單選項觸發。
{% img /images/posts/PortabilityAnalyzerExtension/6.png %}
一樣會產生類似的報表,但是因為透過專案的方式觸發有程式原碼,所以報表還會進一步的給予我們對應的修改建議,Error List 工具視窗這邊也會顯示出對應的訊息。
{% img /images/posts/PortabilityAnalyzerExtension/7.png %}
Link .NET Portability Analyzer extension Leveraging existing code across .NET platforms - .NET Blog - Site Home - MSDN Blogs
read morePosts
Clr C# Heap Allocation Analyzer
Clr C# Heap Allocation Analyzer 是 Diagnostic Analyzers 的套件,功能上有點類似 ReSharper - Heap Allocation Viewer Extension,能對 Heap 的操作部分做些 Highlight。
這邊可先參閱一下影片的介紹:
該套件提供兩種安裝方式,一種是選擇安裝 VSIX,用 Extension Manager 搜尋安裝或是自 NuGet Gallery | Clr C# Heap Allocation Analyzer 1.0.0.5 下載安裝,好處是可以將效果套用至所有專案。
{% img /images/posts/HeapAllocationAnalyzer/1.png %}
一種則是用 NuGet By 專案安裝,好處是可以只套用至特定的專案。
{% img /images/posts/HeapAllocationAnalyzer/2.png %}
安裝完後,在程式編輯時即會呈現進行對應的分析,像是筆者這邊的程式即被偵測出有 Boxing 的動作。
{% img /images/posts/HeapAllocationAnalyzer/3.png %}
Link NuGet Gallery | Clr C# Heap Allocation Analyzer 1.0.0.5 Clr Heap Allocation Analyzer extension
read morePosts
Microsoft.CodeAnalysis.CSharp.FxCopAnalyzers
Microsoft.CodeAnalysis.CSharp.FxCopAnalyzers 是一個 Diagnostic Analyzer 套件,是 FxCop 部分檢查規則的 Analyzer 實作。
{% img /images/posts/FxCopAnalyzers/1.png %}
因為目前仍是 Preview 版本,所以這邊在使用時需先叫出 Package Manager Console,然後叫用命令安裝:
Install-Package Microsoft.CodeAnalysis.CSharp.FxCopAnalyzers -Pre {% img /images/posts/FxCopAnalyzers/2.png %}
安裝完後,我們可以看到方案總管的 Analyzers 節點下多了兩個 Analyzer。
{% img /images/posts/FxCopAnalyzers/3.png %}
展開節點可以看到該 Analyzer 所 Support 的分析。
{% img /images/posts/FxCopAnalyzers/4.png %}
回到程式編輯這邊,可以看到當我們程式撰寫不符合 Analyzer 的規定時,編譯器就會提出對應的警告,像這邊就告知我們要實作 IDisposible 介面,也提供了對應的修正。
{% img /images/posts/FxCopAnalyzers/5.png %}
read morePosts
Roslyn Syntax Visualizers
在使用 Roslyn 做開發時,常免不了會要去處理語法的解析,這時我們會需要輔助工具將語法解析轉換為語法樹,以視覺的方式呈現,讓 Roslyn 的開發上更為便利。
所以開發前我們要到 .NET Compiler Platform Syntax Visualizer extension 這邊下載 Roslyn Syntax Visualizer。
{% img /images/posts/RoslynSyntaxVisualizer/1.png %}
下載完後進行安裝。
{% img /images/posts/RoslynSyntaxVisualizer/2.png %}
{% img /images/posts/RoslynSyntaxVisualizer/3.png %}
安裝完我們可以透過 Visual Studio 的主選單選項(View\Other Windows\Roslyn Syntax Visualizer)將 Roslyn Syntax Visualizer Tool Window 叫出。
{% img /images/posts/RoslynSyntaxVisualizer/4.png %}
叫出後 Roslyn Syntax Visualizer 後,它會偵測目前所編輯的程式碼,將之解析成語法樹。且會偵測編輯區的選取,反映在語法樹上。
{% img /images/posts/RoslynSyntaxVisualizer/5.png %}
反之亦然。
{% img /images/posts/RoslynSyntaxVisualizer/6.png %}
語法樹上的節點有做顏色的區分,可以透過上方的 Legend 按鈕查閱各顏色所代表的意義。
{% img /images/posts/RoslynSyntaxVisualizer/7.png %}
語法樹上節點的滑鼠右鍵快顯選單也有提供一些功能,像是可以用更直覺的圖形方式呈現。
{% img /images/posts/RoslynSyntaxVisualizer/8.
read morePosts
Visual Studio 14 CTP 3 - PerfTips in the Debugger
PerfTips 是 Visual Studio 14 (CTP3 以後釋出)的新功能,能讓開發人員在除錯的同時了解程式的耗時與 CPU 的耗用。
以往我們為了觀測程式的耗時我們需要做程式碼的修改,用 Stopwatch 去監測。在 Visual Studio 14 CTP3 後,我們不需要修改程式就可以很輕易的監測程式的效能,只要透過 PerfTips 功能就可以了。
PerfTips 使用上很簡單,只要設定斷點進行除錯,看你是要 Step Into、Step Over、Step Out、或是直接 F5 跳到下一個斷點,PerfTips 都會自動在後面跳出上一步到這一步之間的耗時。
{% img /images/posts/PerfTips/1.png %}
預設這邊只有開啟耗時的部份,若要查閱 CPU 的耗費,我們可以將滑鼠移至 PerfTips 上面,彈出的 ToolTip 會有這方面的資訊。
{% img /images/posts/PerfTips/2.png %}
或者也可以點擊 PerfTips 叫出對應的選項設定。
{% img /images/posts/PerfTips/3.png %}
將 CPU 耗費的顯示給開啟,或是設定 PerfTips 要大於等於多少才顯示。
{% img /images/posts/PerfTips/4.png %}
{% img /images/posts/PerfTips/5.png %}
Link Visual Studio “14” CTP 3 Released - The Visual Studio Blog - Site Home - MSDN Blogs PerfTips: Performance Information at-a-glance while Debugging with Visual Studio - Microsoft Application Lifecycle Management - Site Home - MSDN Blogs
read morePosts
Visual Studio 14 CTP 2 - Light Bulb Editor Adornment
Light Bulb Editor Adornment 是Visual Studio 14 的新功能,能讓開發人員快速識別及修正程式的錯誤。
當程式錯誤時,Visual Studio 會在編輯區前方,或是在錯誤列的下方出現發亮的燈泡,用以提示程式有錯誤發生。
{% img /images/posts/LightBulbEditorAdornment/1.png %}
{% img /images/posts/LightBulbEditorAdornment/2.png %}
點擊燈泡展開選單,選單會嘗試提供對應的修正。
{% img /images/posts/LightBulbEditorAdornment/3.png %}
{% img /images/posts/LightBulbEditorAdornment/4.png %}
該功能相信很多人都很熟悉,很多知名外掛都有類似的功能。只是 Visual Studio 將之整併成內建的功能,並提供擴充的彈性,允許開發人員撰寫擴充套件自行擴充。
read morePosts
ReSharper - Heap Allocation Viewer Extension
Heap Allocation Viewer 是 Reshaper 的擴充套件,能將 Heap 相關的操作 (像是 Local object allocation、Boxing、Delegate creation、Closure creation ) 進行 Highlight。
使用前需先開啟 ReSharper 的 Extension Manager。
{% img /images/posts/HeapAllocationViewer/1.png %}
搜尋框輸入 heapview 關鍵字,下載並安裝 Heap Allocation Viewer 套件 (若搜尋不到,可能是因為 ReSharper 太舊,需更新為 8.1 以後的版本)。
{% img /images/posts/HeapAllocationViewer/2.png %}
{% img /images/posts/HeapAllocationViewer/3.png %}
{% img /images/posts/HeapAllocationViewer/4.png %}
安裝好後,Visual Studio 即會將 Heap 相關的操作 Highlight。
{% img /images/posts/HeapAllocationViewer/5.png %}
{% img /images/posts/HeapAllocationViewer/6.png %}
以筆者來說,加裝該套件的主要原因是它可以幫我們 Highlight 程式中 Boxing 問題,而且在開發時當 Boxing 問題發生可以很容易的意識到。
read morePosts
Visual Studio 14 CTP 2 - Save and Apply Custom IDE Layouts
Save and Apply Custom IDE Layouts 是 Visual Studio 14 所釋出的新功能,能讓開發人員儲存並套用 IDE 的版面配置。藉此開發人員可依不同的開發情境或是需求下去設置適合的版面配置。像是要專注於程式碼的撰寫時,我們可以配置一個以程式碼編輯區為主較不被打擾的版面配置;要撰寫單元測試,可配置一個嵌有測試結果視窗的版面配置。
使用上只要將 IDE 的版面配置好,接著點擊 [Window/Save Window Layout] 主選單選項將當前的版面配置儲存。
{% img /images/posts/VS14SaveAndApplyLayout/1.png %}
{% img /images/posts/VS14SaveAndApplyLayout/2.png %}
{% img /images/posts/VS14SaveAndApplyLayout/3.png %}
當需要時可透過點擊 [Window/Apply Window Layout] 主選單選項,或是透過觸發熱鍵 Ctrl + Alt +1~9 快速的進行版面配置的切換。
{% img /images/posts/VS14SaveAndApplyLayout/4.png %}
這邊的 Layout 擺放順序跟儲存的順序有關,若有需要隨時可透過點擊 [Window/Manage Window Layouts] 主選單選項,將 Manage Window Layouts 視窗叫出來調整。
{% img /images/posts/VS14SaveAndApplyLayout/5.png %}
{% img /images/posts/VS14SaveAndApplyLayout/6.png %}
read morePosts
Visual Studio - Use 64 Bit IISExpress
雖然 .Net 程式支援位元適應性,Visual Studio 也允許我們做 64 位元的網站開發,但 Visual Studio 預設啟用的 IISExpress 是 32位元的。
{% img /images/posts/x64IISExpress/1.png %}
所以當在做 64 位元的網站開發時,在本地端測試我們會發現網站會跑不起來,因為 64 位元的網站無法跑在 32 位元的 IISExpress 上。
這時要馬要改用 IIS 去跑,要馬就是要像像下面這樣輸入命令修改登錄檔,將 Visual Studio 設定為使用 64 位元的 IISExpress:
reg add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1 注意到這邊,登錄檔位置依 Visual Studio 版本不同會有所差異,可參閱 Microsoft Visual Studio - Wikipedia, the free encyclopedia 內的 Internal version 部分下去調整。
{% img /images/posts/x64IISExpress/2.png %}
設定完後重起 Visual Studio,再次運行跑起來的就會是 64 位元的 IIS Express。
read morePosts
Visual Studio 2013 - 64-bit Edit and Continue for .NET Framework code
Visual Studio 的 Edit And Continue 功能可以允許開發人員在除錯的同時進行程式的修改,Visual Studio 會自動套用變更的程式碼,不需中斷除錯或是重新編譯,能有效的節省時間,增加除錯與開發上的效率。
不過在舊版的 Visual Studio 只支援 32 Bit 的程式使用 Edit And Continue 功能,若是開發 64 Bit 程式則不能啟用。
{% img /images/posts/VSEditAndContinue64/1.png %}
Visual Studio 2013 後解除了這項限制,開始支援在 64 Bit 程式上使用。
{% img /images/posts/VSEditAndContinue64/2.png %}
Link Debugging support for 64-bit Edit and Continue in Visual Studio 2013 - Microsoft Application Lifecycle Management - Site Home - MSDN Blogs What’s New in Visual Studio 2013 Edit and Continue
read morePosts
Devart T4 Editor - VS add-in for editing T4 templates
Visual Studio 內建的 T4 Template Editor 很陽春,不僅無法 Syntax Highlighting,也無法 Intellisense,在除錯時查看變數也非常不便,更無法靜態程式碼分析及 Format 程式碼,造成開發 T4 Template 的效率大幅降低。
Devart T4 Template 是ㄧ Visual Studio 的擴充套件,能解決這些煩人的問題,提升 T4 Template 的開發速度。
套件可至 Download Devart T4 Editor 這邊下載安裝。
{% img /images/posts/DevartT4Editor/1.png %}
{% img /images/posts/DevartT4Editor/2.png %}
{% img /images/posts/DevartT4Editor/3.png %}
{% img /images/posts/DevartT4Editor/4.png %}
{% img /images/posts/DevartT4Editor/5.png %}
{% img /images/posts/DevartT4Editor/6.png %}
安裝完重啟 Visual Studio,開啟 T4 Template 檔案,可以看到 Syntax Highlighting 已被支援。
{% img /images/posts/DevartT4Editor/7.png %}
Intrllisense 支援。
read morePosts
Visual Studio - Extension Manger Cannot Connect From Behind a Firewall
筆者工作環境的電腦,Visual Studio 內的 Extension Manager 無法正常的運作,查了一下才知道這是因為防火牆擋住了 100-Continue 的訊息發送所導致。
{% img /images/posts/VSExpect100Continue/1.png %}
因此要將 Common7\IDE 下的 devenv.exe.config 開啟調整,將 100-Continue 這個 Feature 關閉才可正常運作。
{% img /images/posts/VSExpect100Continue/2.png %}
檔案開啟後,在 system.net 的節點內加入 <servicePointManager expect100Continue="false"/>,將 100-Continue 這個 Feature 給關閉就可以了。
{% img /images/posts/VSExpect100Continue/3.png %}
Link visual studio 2010 - Cannot connect to any online resource - Stack Overflow ServicePointManager.Expect100Continue 屬性 (System.Net) Visual Studio Extension Manger Cannot Connect From Behind a Firewall Expect:100-continue | 風雪之隅
read morePosts
Code Compare - File and Folder Merge Tool
Code Compare 是ㄧ用來對檔案、目錄做比對與合併的程式,能輕易整合開發人員的開發環境。
使用前請至 Visual Studio Gallery 下載。
{% img /images/posts/CodeCompare/1.png %}
下載後點擊安裝…
{% img /images/posts/CodeCompare/2.png %}
{% img /images/posts/CodeCompare/3.png %}
{% img /images/posts/CodeCompare/4.png %}
安裝這邊會提供一些設定選項,可供使用者決定有哪些環境需要整合。
{% img /images/posts/CodeCompare/5.png %}
{% img /images/posts/CodeCompare/6.png %}
安裝完成就可以透過被整合的環境下去觸發使用。
像是筆者這邊在安裝時有勾選與 Visual Studio 整合,就可以在 Visual Studio 的方案總管中直接選取兩個檔案做比對。
{% img /images/posts/CodeCompare/7.png %}
{% img /images/posts/CodeCompare/8.png %}
Link Code Compare extension Code Compare - File Diff & File Merge Tool, Folder Compare Tool
read morePosts
Visual Studio - JSON Debugger Visualizer in Visual Studio 2013
以往我們在做 JSON 資料的除錯時,若是不加裝外掛, 在 Visual Studio 上只能透過純文字模式下去檢視。不易查閱與驗證,若資料是非 Format 過的,則更是麻煩。
Visual Studio 2013 Update 2 CTP 後 Visual Studio 加入了 JSON Debugger Visualizer 功能。透過這個功能,能有效的解決這樣的困擾。
它提供了較為友善的除錯界面,將 JSON 資料展開用樹狀結構呈現。不管是否是 Format 過的資料,都是一樣的呈現方式。
{% img /images/posts/JSONDebugVisualizer/1.png %}
{% img /images/posts/JSONDebugVisualizer/2.png %}
透過樹狀結構的呈現方式, JSON Debugger Visualizer 清楚的表達了 JSON 資料的階層性與其值。
若是 JSON 內資料多到不易找尋,它也提供了搜尋的功能,能輔助我們快速的從 JSON 資料中找出感興趣的部分…
{% img /images/posts/JSONDebugVisualizer/3.png %}
找到感興趣的資料後,若有需要我們可以在上面按下滑鼠右鍵,在彈出的滑鼠右鍵快顯選單中有提供一些複製的功能,像是複製該資料的路徑、Key、Value、或是 Key 跟 Value 一起複製。
{% img /images/posts/JSONDebugVisualizer/4.png %}
最後一提,要是這邊所查閱的資料是非 JSON 格式的,或是格式有誤。 JSON Debugger Visualizer 會改以純文字的方式呈現,並告知我們該資料不是 JSON 格式。
read morePosts
Code Digger - Analyzes possible execution paths through your .NET code
Code Digger 是精簡版的 Pex,其內部還是使用 Pex 的程式碼分析引擎,能將有意義的參數的抓出,幫助我們更了解程式,並找到可能的淺在問題。目前該擴充套件支援 Visual Studio 2010 以後的版本 (Visual Studio 2012、 Visual Studio 2013),Visual Studio 2010 以前我們可以改使用功能更為強大的 Pex。
Code Digger 在設立之初只支援 Protable Class Library ,故非 Protable Class Library 的專案在使用時會看到像下面這樣的訊息框。
{% img /images/posts/CodeDigger/1.png %}
Code Digger 的功能也無法使用。
但在某一版後,Code Digger 能在 Options 那邊將這限制關閉。只要開啟 Options 對話框,切換至 Pex/General 頁籤,將 Code Digger 群組下的 DisableCodeDiggerPortableClassLibraryRestriction 設定為 True 就可以了。
{% img /images/posts/CodeDigger/2.png %}
使用時,我們只要在要分析的方法中按下滑鼠右鍵,在彈出的滑鼠右鍵快顯選單中選取 Generate Inputs / Outputs Table 選單選項。
{% img /images/posts/CodeDigger/3.png %}
接著會彈出 Code Digger Analytics 對話框,詢問是否同意 Code Digger 收集使用的資訊,這邊請視個人需求下去勾選就好,若有需要後續都可以至 Options 內做修改。
read morePosts
[C++]使用nsiqcppstyle輔助檢查C/C++的Coding Style
[Example] nsiqcppstyle . nsiqcppstyle targetdir nsiqcppstyle -f filefilterpath targetfilepath
[Options] -h Show this help -v Show detail ouput(verbose mode) -r Show rule list -o path Set the output path. It’s only applied when the output is csv or xml. -f path Set the filefilter path. If not provided, it uses the default fi lterpath (target/filefilter.txt) If you provide the file path(not folder path) for the target, -f option should be provided.
read morePosts
[C++][Visual Studio]Visual studio 2010 C++0x new feature: lambda
auto result = lambda(1,2);
auto result = lambda(1,2);
auto lambda = = -> int { return val1 + val2; };
result = lambda();
lambda(1,2);
lambda(1,2);
auto lambda = =, &result { result = val1 + val2; };
lambda();
read morePosts
[C++][Visual Studio]Visual studio 2010 C++0x new feature: nullptr
void Test(int value) { cout << “void Test(int value)”; }
int _tmain(int argc, _TCHAR* argv[]) { Test(NULL); return 0; }
#include “stdafx.h” #include <iostream>
using namespace std;
void Test(int* value) { cout << “void Test(int* value) “; }
void Test(int value) { cout << “void Test(int value) “; }
int _tmain(int argc, _TCHAR* argv[]) { Test(NULL); Test((int*)NULL); Test(nullptr); return 0; }
read morePosts
[C++][Visual Studio]Visual studio 2010 C++0x new feature: auto
#include “stdafx.h” #include <string> #include <list> #include <map>
using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { auto x = 1, *y = &x, **z = &y; // Resolves to int. auto a(2.01), *b (&a); // Resolves to double. auto c = ‘a’, *d(&c); // Resolves to char. auto m = 1, &n = m; // Resolves to int.
map<int,list<string>> mapObj; map<int,list<string>>::iterator i1 = mapObj.begin(); auto i2 = mapObj.begin(); auto lambda = []()->int { return 0; }; return 0; }
read morePosts
[C++][Visual Studio]Visual studio 2010 C++0x new feature: static_assert
#include “stdafx.h”
#define DEFAULT_VALUE 0 #define MAX_VALUE 100
const int VALUE = 10;
struct MyStruct { char data[1024]; };
template < class T, int Size > class Vector { static_assert(Size > 0, “Vector size must be bigger than zero!”);
T m_values[Size]; };
int _tmain(int argc, _TCHAR* argv[]) { static_assert( sizeof(void ) == 4, “64-bit code generation is not supported.”); static_assert( MAX_VALUE > DEFAULT_VALUE, “DEFAULT_VALUE must be smaller than MAX_VALUE” ); static_assert( MAX_VALUE > VALUE, “VALUE must be smaller than MAX_VALUE” ); static_assert( sizeof( MyStruct ) < 10241024, “The structure size exceeds stack size” ); Vector<int, 10> intArray; return 0; }
read morePosts
[C++][Visual Studio]Natived C++使用Visual Studio做單元測試
//Act actual = myObj.Add(x, y); //Assert Assert::AreEqual(actual, expected); }; }; }
read morePosts
[VS 2010]Generate From Usage
namespace Generate_From_Usage { class Person { } } Generate Property當物件的屬性不存在時,我們可透過Generate From Usage的Generate Property來替我們產生。 使用後,會幫我們產生對應的屬性 using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Generate_From_Usage { class Person { public string Name { get; set; } } } 若要產生靜態的屬性,我們可以透過"類別.屬性名稱"來作Generate Property 使用後,靜態的屬性就產生了 using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Generate_From_Usage { class Person { public string Name { get; set; } public static string StaticProperty { get; set; } } } Generate Field當物件的欄位不存在時,我們可透過Generate From Usage的Generate Field來替我們產生。 使用後,會幫我們產生對應的欄位 using System; using System.
read more