2011-06-13 26 views

回答

10

好吧,正如你幾乎發現的那樣;你不能這樣做。該設計不允許您加載不在XAP中發佈的程序集。這是一種安全設計,因爲他們不希望您下載並運行未通過市場檢查的任意代碼。

這與蘋果公司如何控制其應用程序商店一致。爲什麼這個功能不存在,爲什麼我懷疑它會被添加:

  1. 市場。微軟要求所有應用程序通過黑匣子檢查。他們可能會尋找許多事情,例如性能,主要錯誤,冒險材料和UI一致性。允許開發人員加載和運行任何程序集完全繞過了市場。這會以幾種方式傷害用戶。首先,開發人員會試圖將其用作在市場之外分發更新的方式,或者偷偷在微軟不允許在其市場上銷售的功能(如色情)中。
  2. 安全。能夠加載程序集是一個強大的功能,可以是好的也可以是壞的。如果開發者錯誤地實現了它,它可能會被利用。其次,它可能是微軟對技術限制(或時間限制),因爲它會影響應用程序的沙盒。或者更糟糕的是,一個看似無害的應用程序在已經通過檢查後下載了一個不同的程序集,然後開始做一些邪惡的事情;如密鑰記錄並將其上傳到某處。自從它進入市場以來,微軟在向公衆發佈它之前從未能夠抓住它。

你可以做什麼,OJ的意見建議,爲使大會作爲XAP的一部分,並使用Assembly.Load重載,讓你的名字載入它的一個。你可以可以動態加載程序集,他們只需要成爲你的XAP的一部分。

+1

認爲你的回答是正確的。但只是刪除該功能是短視的。在很多情況下,人們可能希望將程序集作爲嵌入式資源運輸,然後在運行時選擇要加載的程序集。 – Simon 2011-06-13 03:01:56

+0

只需將它們全部裝入XAP中,而無需將它們嵌入到一個裝配中,並在需要時裝入它們。 – 2011-06-13 03:08:08

+3

@Simon是的,我同意,但我認爲最終這是微軟做出的正確決定。對於那種功能來說,有太多的負面消息(對於最終用戶)。 – vcsjones 2011-06-13 03:13:19