2009年11月30日 星期一

VS2010 的 Coded UI Test 在 WPF 應用程式上無效?

試著使用 VS2010 的新測試功具 Coded UI Test 時,發現在WPF應用程式上無法建立 Assertion。

為何呢?如下圖,原因出在 「An update for windows Automatin API 3.0 must installed to enable…」

image

原來,WPF 的Coded UI 測試,要使用 Assertion 功能時,需要安裝一個 Update,見 Description of the Windows Automation API 及安裝對應的版本即可

2009年11月27日 星期五

減重的十件必須知道的事

減重的十件必須知道的事

  1. Don't skip meal : 每一餐都不能省略
  2. Use smaller plates : 用小盤子
  3. Count your calories : 計算吃的卡路里
  4. Don't blame your metabolism : 不要怪自己的新陳代謝不好
  5. Protein staves off hunger pangs : 蛋白質比較不會餓
  6. Soup keeps you feeling fuller for longer : 湯類較有飽足感
  7. The wider the choice, the more you eat : 愈多選擇,吃的愈多
  8. Low fat dairy helps you excrete more fat : 低卡的奶製品幫助排出脂肪
  9. Exercise goes on burning fat, eve while you sleep: 運動後將持續減重,即使隔天你只是在睡覺
  10. Keep moving and lose weight : 讓自己不停地動,就能減重。例如不搭電梯,改走樓梯。

2009年11月20日 星期五

Office 2010 Beta 已經出來了

已經於 11/16 日出來了公開測試版。

可到此處  公開下載  下載程式。安裝時需要key,需要到處理 註冊

image

已從CTP 版試用了好一陣子,沒有什麼問題。
目前只有英文版、簡體中文版、日文版等可用,還沒有繁體中文版。

2009年11月18日 星期三

Asp.Net: File does not exist

在幫別人除錯 asp.net 時,發生了如下的錯誤。

Type : System.Web.HttpException, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Message : File does not exist.
Source : System.Web
Help link :
ErrorCode : -2147467259
Data : System.Collections.ListDictionaryInternal
TargetSite : System.IO.FileInfo GetFileInfo(System.String, System.String, System.Web.HttpResponse)
Stack Trace :    at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
   at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
   at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

但,這是如何發生的呢?並沒有指明是哪一個 page 發生錯誤。

首先,這是有故事的。
我幫同事做了 exception 的 log,也就是發生錯誤時會例外資訊記錄到檔案上。後來發現只要登入後,一到網站首頁,記錄檔就會看到這樣的錯誤資訊。

再來,我發現該專案是使用 Web Development Server 開發的,而不是使用 IIS。這一點我一直不信任 Web Development Server,因為該模式是使用開發人員的權限,而不是真正的 IIS 的權限。未來在正式機器上部署後,還會有權限不正確的變數。

更奇妙的是,我發現只有使用 Web Development Server 才會發生這種現象,而host 在IIS 時是不會發生的。

最後,我在記錄的 handler 上,再寫出HttpContext.Current.Request.FilePath 。令人不解的是,FilePath 竟然是 “/images/default_12.jpg”!!

我的解讀如下:

當使用 IIS 6.0 時,IIS 一遇到 jpg 檔時,就直接找 jpg 檔案後輸出。所有過程與 asp.net 無關。

而使用 Web Development Server , 則所有的檔案皆使用 asp.net 來處理。當遇到 jpg 檔時,會使用 StaticFileHandler 來處理。

因此,不要使用 Web Development Server 來開發。因為畢竟與 IIS 的運作不一樣。

2009年11月16日 星期一

無法載入 DLL 'VSCover90': The specified module could not be found. (發生例外狀況於 HRESULT: 0x8007007E)

開發程式後,執行測試。由於沒有耐心等測試跑完,就急著放 assembly 到正式機上了。哪知一執行,網頁竟跑出

無法載入 DLL 'VSCover90': The specified module could not be found. (發生例外狀況於 HRESULT: 0x8007007E)

 

原來,我在執行測試時,也同時收集 code coverage (程式覆蓋率)。為了能收集該資料,Visual Studio 看來有放一些 sampling 的程式到 assembly上。
而 Visual Studio 正執行測試時,我就急著放 assembly到正式機了。因此會出現這樣的怪事。

解決方法呢?等測試執行完後,再部署 dll 即可。

2009年11月2日 星期一

取得文件庫中所有簽出文件的所有權

有同事一次將4000 多個檔案放到MOSS 的文件庫後,卻沒有簽入。此時,再請他簽入時,卻只能一個一個檔案簽入了。

救命啊!果然不是人做的。此時只有使用系統帳號,取得所的已取出文件的所有權,然後再以系統帳號再簽入。

可是,還是不行。因為一次要處理的文件太多了,全選並取得所有權時,伺服器會出現 Sql Server Parameters 最多只能有 2100 個的限制。

只好寫程式了。以下就是我寫的程式。

private static void TakeOwnershipOverAllCheckoutFiles(string sitePath, string refWeb, string listName)
    {
      using (SPSite site = new SPSite(sitePath))
      {
        SPWeb web = site.OpenWeb(refWeb);
        SPList list = web.Lists[listName];

        SPDocumentLibrary library = (SPDocumentLibrary)list;

        IList<SPCheckedOutFile> files = library.CheckedOutFiles;

        foreach (SPCheckedOutFile file in files)
          file.TakeOverCheckOut();
      }
    }

這樣一來,就避免了Web UI 的限制。

Share with Facebook