2010年4月8日 星期四

Microsoft Desktop Player,微軟 kown how 集中營

Microsoft Desktop Player 真是一個好束西。請直接到 www.microsoft.com/click/desktopplayer 上觀看影片學習知識。

由於使用的是 Silverlight 技術,畫面本來就比 On-Demand WebCasts 來的簡單美觀許多。

一開始,請在右方處選擇你是 IT Pro 還是 Developer,這裡將會影響的搜尋結果為 technet 相關還是 msdn 相關。

image

再來,根據相關資源的分類再細選 Looking for resources on。我就選最近要上市的 Visual Studio 2010 吧。

搜尋到的資源可分為 Webcasts, Podcasts, Whit Patters, Links 這四類。Webcasts 是影片教學,是我最喜愛的學習方式。Podcasts 則需英聽能力超強。

image

選擇一個 Webcast 後,可直接在內容區觀看影片囉!

image

2010年4月7日 星期三

Unit Test + Code Coverage + Strong Name = test failed

在執行測試時,發生了如下的錯誤訊息,而測試並未被執行

Strong name verification failed for the instrumented assembly 'Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Please ensure that the right key file for re-signing after instrumentation is specified in the test settings.

原因

為了取得 Code Coverage的資訊,執行測試時,事實上是在受測的 assembly 增加了一些程式,以方便取得資訊。

然而,如果 assembly 本身就有 strong name的話,被增加了一些程式,當然會被認為不安全了。因此這個機制就無效,也就無法取得 Code coverage 的資訊了。

解法

可見 Instrumenting and Re-Signing Assemblies。我使用的是比較簡單的Disable Signing Verification方法,也就是不檢查某些 assembly 的簽章啦。

解決我的問題,就是在 cmd.exe 下 sn –Vr Microsoft.Practices.Unity.dll 就解決了。

這樣,只會影響執行測試的機器無法檢查指定的 assembly 了。

進階解法

雖然使用上述的方法可以解決該問題,但在該台機器就不檢查這些指定的 assembly?好像也不太對。最好能在測試前執行 sn –Vr assembly.dll,測試後再回復設定。

因此,就可以使用 sn –Vu assembly.dll 語法了。該語法還原 assembly.dll 成必須檢查 strong name。另外,在執行測試的設定(通常是 LocalTestRun.testrunconfig)上,設定 setup and cleanup scripts,執行這些指令就可以了。

如下圖。setup.cmd 內放 sn –Vr assembly.dll , cleanup.cmd 放sn –Vu assembly.dll

image

2010年4月2日 星期五

為程式碼減肥

在開發的過程中,會不斷的新增及修改程式。雖然使用了 TDD (Test-driven development)開發方法,一定程度上不會寫出不必要的程式,但人非聖賢,難免還是會留下一些不必要的註解及程式。

要下是我常見的毛病:

  1. 宣告了變數卻從不使用。
  2. 指定了變數值(assign),卻從不讀取(comsume)
  3. 宣告了 private method (方法),卻沒有使用過。
  4. etc

這樣一來,程式碼難免愈來愈來多, assembly size也就愈來愈大,執行時就需要更多載入時間,導致維護困難與效能不佳的問題。

有沒有工具可以幫我們找出一些不要的程式「脂肪」呢?在 Visual Studio 2005 後,就多了一個 Code Analysis 工具,可以幫我們找出許多程式碼的問題。

image

在方案總管的某一專案上按右鍵/內容,可以找到 Code Analysis 頁。

image

在 Performance Rules中,可以找到一些有用的 rule,可用來檢查上述不必要的程式碼。

  • CA1804: 未使用的區域變數。這個最常犯了,一定要選取
  • CA1805: 不必要的初始值。
  • CA1809: 過多的區域變值。
  • CA1811: 未被呼叫的私有程式碼。見 CA1811: Avoid uncalled private code
  • CA1823: 未被使用的私有成員變數 (private field)。

自己已經覺得有程式碼潔癖了,但仍使用Code analysis 找到不少的程式脂肪,真窘。

在 Code Analysis 還有許多寶物等待我們去挖掘呢。

PS: 有些英文實在難以翻譯出適當的中文敘述,請大家見諒。

2010年3月31日 星期三

刪除 workitem 及 workitem type definition

在 Team Foundation Server 2008上,建立了一個錯誤或不再需要的 work item,那該怎麼辦呢?

這時候需要安裝 Team Foundation Server Power Tools 了。
安裝完畢後,可以在 C:\Program Files\Microsoft Team Foundation Server 2008 Power Tools\ 下找到 tfpt.exe 指令。

刪除 workitem 1
tfpt destroywi /server:tfsservername /workitemid:1

刪除 workitem type definition
tfpt destroywitd /server:tfsservername /project:projectname /workitemtype:witdname

2010年3月30日 星期二

Ajax Enabled WCF Service on IIS 7 always return 404 error

最近 study 了 Ajax enabled WCF Service,覺的著實好用。於是想放到 MOSS 上。而 MOSS 是位於 Windows Server 2008 的 IIS 7 上。一試,就發現 IIS 7 執行 svc 時是正常的,但一執行 *.svc/js 就會回傳 404 (not found) 的錯誤。

然而,在 IIS 6 (windows 2003) 上不會發生這個問題。

花了一整天,都在處理這個 Issue。一度還以為是 moss 的問題。

現在終於找到了原因。在此將完整的步驟記錄下來。

  1. 建立一個 WCF Service. 並且記得要 加上[ServiceContract],[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  2. 在 config 上,使用 webHttpBinding, 並啟用 <enableWebScript/> 的 endPoint behavior
  3. 部署程式到 Windows 2008 的 IIS 7 上。此以瀏覽器輸入網址 *.svc/js 會回傳 404 錯誤
  4. 這一步就是我漏掉的。打開 IIS 管理員,找到該網站(Site),於 "處理常式對應”(Handler Mappings)上,新增一個指令對應。

要求路徑:*.svc
執行檔:%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
名稱:svc-ISAPI-2.0

       如下圖。

image

這樣一來就解決了問題。

2010年3月25日 星期四

C# 鍵盤對照表

想要開發時增加生產力,一定要了解快速鍵。

請參照 Visual C# 2008 Keyboard Shortcut Reference PosterVisual C# 2005 Keyboard Shortcut Reference Poster

[2010/04/29] 補上 VS 2010 Key binding Card

下載的 pdf 檔,有時真的不知道在說些什麼,因為說明實在太精簡了,而給的範圍也太大了些。此時,知道別的專家都使用哪些快速鍵是個好方法,此時參考 http://stackoverflow.com/questions/98606/favorite-visual-studio-keyboard-shortcuts 。這裡反而是較快上手的地方呢。

最完整的地方,當然還是 msdn 了。

2010年3月18日 星期四

Windows 2000, XP SP2 and Vista 終止技術支援

客戶是老大,但有些事不是出錢就能解決的。

常見的問題,是客戶的平台太舊了,微軟不支援,當然身為廠商的我們,也就難以支援了。畢竟我們使用微軟的技術來支援。

Windows 2000 Professional及Windows 2000 Server版本將於美國時間2010年7月13日停止技術支援服務。
微軟將停止Windows XP SP2版本的安全更新,請您記得安裝更新Windows XP Service Pack 3。
Windows Vista (若沒安裝 任何的 Service Pack的話)將在美國時間2010年4月13日停止技術支援服務,請您記得安裝更新Windows Vista Pack 2 。

一句老話:電腦硬體都會汰舊換新,那軟體的版本當然也會。

Share with Facebook