一個方案中通常不會只有一個Web專案,按下F5偵錯時所有的Web都會啟動,或是有時只是在單元測試中偵錯,Web專案沒事也啟動,很討厭,其實是有方法可以關閉的。
[Visual Studio 小技巧]停用Web專案偵錯時都會啟動
- 10602
- 0
- Visual Studio
一個方案中通常不會只有一個Web專案,按下F5偵錯時所有的Web都會啟動,或是有時只是在單元測試中偵錯,Web專案沒事也啟動,很討厭,其實是有方法可以關閉的。
在使用Visual Studio的測試工具測試時,常常會搭配一些檔案一起測試,因為不希望測試Method直接變動到為了測試準備的原始檔案,通常會複製原始檔案到測試的目錄中,本篇說明如何使用Visual Studio的測試工具部署檔案,並說明Visual Studio測試工具部署檔案時常撞邪的地方。
因為小弟在測試時會開啟部署,產生測試DB,寫Log等等,這樣TestResults的Out會有不少檔案,我嫌硬碟IO太慢,就將TestResults改到RamDisk中。
在建立Visual Studio測試專案的時候,預設會建立二個測試設定檔,Local.testsettings與TraceAndTestImpact.testsettings,這二個只有設定在部分設定有不同如圖一,原本我會修改Local.testsettings,讓Visual Studio執行測試時會用x64執行,TestResults放到R槽(RamDisk)等等,但是只有我自己電腦可以執行(我的電腦在同事間比較好,有的同事記憶體太少不能用RamDisk),使用這些設定可能會讓同事無法執行測試,最後我只好建立自己的測試設定檔。
雖然有NuGet package explorer可以編輯nuspec,但是只是要變更一點改內容,用NuGet package explorer太廢事了,而且nuspec檔案是XML的格式,可以直接在Visual Studio編輯,只要提供XSD(XML Schema Definition)檔,Visual Studio就可以依照Schema的內容提供IntelliSense。
有時安裝組件的時候,必需增加一些程式才能正常的執行,NuGet有提供如同Item Template使用ProjectProperties的功能,撰寫組件所需的程式碼,在安裝Package時將其中的變數,轉換成專案的設定值。
在NuGet還沒有出來前要在專案中加入組件的相關Config是挺麻煩的,要看著文件或範例來一段一段複制貼上Config,說真的不是很方便,但是NuGet有提供Config轉換,會把需要設定的Config合併到專案的Config中,可以省下不少設定時間,這篇就來跟大家說在建立Package時如何加入Config轉換檔。
有時可能因為專案是使用較舊版本的Assembly,使用NuGet GUI不能選版本只能下載最新版Package安裝,新版Package中的Assmebly可能與你的專案不相容,使你的專案無法執行,但又不想自己手動去下載Assembly,手動加入參考,那該怎麼辦呢?
雖然NuGet的GUI(寫文時是1.5版)還沒有提供,但是Command-Line指令卻有支援,遇到這種情況先將用Command-Line指令安裝nupkg吧。
目前建立nupkg檔的方式有二種,使用NuGet命令列工具或NuGet Package Explorer GUI工具,個人是覺得先用NuGet Package Explorer建立NuSpec,之後在用NuGet命令列與MSBuild編譯後自動上傳,會比較方便。
目前建立nupkg檔的方式有二種,使用NuGet命令列工具或NuGet Package Explorer GUI工具,個人是覺得先用NuGet Package Explorer建立NuSpec,之後在用NuGet命令列與MSBuild編譯後自動上傳,會比較方便。
說真的,管理自己或公司專案上寫的通用元件或javascript檔案是很麻煩的一件事,元件的安裝也是件麻煩事,而更新又是一個更麻煩的事,前陣子看到黑大的架設私房NuGet Server,感覺就像看到銀子彈一樣,最新就在公司架了起來,將元件都上傳到私人NuGet Server,三件麻煩事都解決了。
這是小弟第一個Visual Studio 2010 Extesnion的程式,寫起來不難也不花俏,但滿實用的小套件。
有時Web Project會有一些檔案在不同專案間共同使用,如Javascript檔、圖檔、第三方套件等等,如果每一個專案都放置一份,很容易照成維護上的麻煩(如修改A專案的檔案,忘了複製到B專案),這時可以調整一下檔案的結構與修改一下專案的設定來解決這問題(這是小弟最近建方案的心得,不一定是最好的)。
因為Moles官方暫時還沒有辦法解決,讀取測試專案的app.config問題,我只有以繞遠路的方式去跳過這個問題,我最早的方式是手動去改Microsoft.Moles.VsHost.exe.config(詳情可參考Moles - Isolation framework for .NET介紹),而我們專案成員有5個加上1台Build Server,所以我要設6次,本以為設定一次就搞定了,但因為前幾天app.config的設定有變更,我一想到要改6台我就累了,而且當方案一多切換也是個麻煩,所以我想到以Post-build Event的方式,當從版本管理簽出後編譯完成時將測試專案的app.config去覆蓋Microsoft.Moles.VsHost.exe.config。
在用CodedUI寫自動化測試時,我不喜歡用工具產生的代碼(相關資訊可參考手工製Coded UI Test(Visual Studio 2010新的UI自動化測試)),寫久了有一些經驗,例如找到控制項的一些的小技巧。
Visual Stuido的單元測試有3種Initialize與Cleanup,讓開發測試時,可以在TestMethod執行前做一些初始化,結束後做一些清除,而這3種Initialize與Cleanup各針對了不同時期,如:我猜鮮少人知道的Assembly的Initialize與Cleanup,是在一個測試專案的所有TestMethod執行前呼叫Initialize,與一個測試專案所有TestMethod結束後呼叫Cleanup。
因為我比較習慣WinMerge這套工具,改用TFS作為版本管理時,有點不適應內建的陽春工具,花了些時間找如何設定,以下是設定的方式。
平常我會用Visual Stuido的測試專案,寫一些自動化測試,如單元測試、整合測試等等,受測的Code中有很多地方用NLog記錄訊息,在正試的環境,會寫到資料庫,但測試時我會想把訊息輸出到每一個測試的結果中,除了節省資料庫外,也比較容易追縱錯誤訊息。
最近的一個專案中,有用到一個組件有分32位元與64位元的組件,如Chilkat .NET,因為Visual Studio 2010是32位元,如果開發時用64位元的組件,會發生一些問題,如AspNetCompiler編譯失敗,還有MVC專案的View,在Design時發生載入組件錯誤,使得無法使用IntelliSense,所以開發時沒辦法只能用32位元的組件,但佈署時又不希望人工去替換組件,怎麼辦呢?
Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用Stopwatch,最近我都改用單元測試來測,快又簡單。