Capability Detection Tool

摘要:Capability Detection Tool

在筆者先前的文章Silverlight for Windows Phone 7:Hello Windows Phone 7中,有提到WMAppmanifest.xml這個檔案的用途;其中Capabilities的標籤中,就是設定了應用程式會使用到那些功能,而針對這個部分,MSDN網站中也發布了一個新的工具可以來幫助開發者偵測你的應用程式中用到了那些用途,MSDN的說明可以參考這邊,下面筆者簡單說明一下使用的方式。
要使用這個工具,必須要安裝Windows Phone Developer Tools October 2010 Update安裝完畢之後就會多了Windows Phone Capability Detection tool可以使用,這個工具是一個命令列的工具,位置在
x64: %ProgramFiles (x86)%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect
x86: %ProgramFiles%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect

而使用的方式是開啟命令提示字元,切換到工具的目錄(上述的資料夾位置),輸入以下的命令
CapabilityDetection.exe Rules.xml [您的專案輸出資料夾]
專案資料夾是指定到"資料夾"就可以了,不用指定到xap檔案喔,而執行之後,在命令提示字元的視窗中就會出現檢測的結果,例如下圖這樣


依照這個結果就可以去修改您的WMAppmanifest.xml的檔案內容了。
而這麼做有什麼用處呢?全部都加進去不是最保險?筆者猜想這部分或許將來在應用程式執行時,依據設定檔不同會出現不同的訊息告知使用者,並請使用者確認之後才允許執行;而這個時候明確的告訴使用者應用程式將執行到那些功能會是比較好的方式。
另外,在MSDN中最下面有提到
In some circumstances, you may receive the ID_CAP_NETWORKING capability from the tool even if your application does not use networking. An example would be if you declared a local URI in the XAML. In such cases, you may remove this capability, but ensure that you fully test and deploy your application once you remove this capability.
這部分是說有時候當你的應用程式沒有使用到網路功能,但是偵測工具還是回報說有使用到網路功能,這是因為在應用程式中,倘若有使用到一些用戶端的URI(例如說轉頁等等的方式),這個時候偵測工具也是會判定是有使用到網路功能;而在這個情況下,您也可以移除NetWork的Capabilitie標籤,不過記得要完整的測試您的應用程式,以免造成預期外的錯誤。
以上給各位參考了。