2012-05-14 50 views
3

在MSDN中,據說AppDomain.GetAssemblies() is supported in Silverlight 4是否真的在Silverlight 4中支持AppDomain.GetAssemblies()?

在我的項目,我的目標的Silverlight 4的版本(我三重檢查),如下面的截圖我無法訪問對AppDomainGetAssemblies()方法:

Cannot find GetAssemblies() method on AppDomain class in Silverlight 4

如果無論如何我都會嘗試,它不會編譯。我可以使用下面的代碼解決此:

dynamic domain = AppDomain.CurrentDomain; 
var assemblies = domain.GetAssemblies(); 

它編譯並似乎工作正常,但僅在Silverlight客戶端5.X和Silverlight從我的測試4.0.60351及以上。它不適用於以下版本的客戶端。 有問題的項目是我的Silverlight應用程序的入口點。

谷歌搜索關於該主題主要是說,它支持...

所以我的問題是:

  • 一)是否真的支持,如果是的話我怎麼可以用它來保證只要我的客戶使用4.38版本的的任何,它就會一直工作。
  • b)如何在IDE中使用AppDomain.CurrentDomain.GetAssemblies()而無需上述解決方法?有什麼我錯過了嗎?

在情況下,它可能是有用的,我有以下安裝在我的桌面上:

  • Silverlight客戶端5.1.10411
  • 的Silverlight SDK 3,4和5
  • 的Silverlight 4工具包月2010
  • 的Silverlight 4個工具VS2010

我沒有嘗試unins高大/重新安裝任何東西(還),以避免在這個繁瑣的任務失去了整整一天......

-

編輯:看來,GetAssemblies()方法上不存在AppDomain類在mscorlib.dll的SL4。所以我猜MSDN文檔是不正確的,並且運行時SL4客戶端由於某種原因(與SL5編譯的應用程序的兼容性?)在某些時候已經被打上補丁了... ...

+0

我不能在你的鏈接msdn頁面中看到GetData方法。嘗試在CurrentDomain上按F1並查看您將鏈接的位置。 – Reniuz

+0

@Reniuz它給我帶來了有關.NET Framework 4的幫助,而不是Silverlight :-) – Guillaume

回答

2

我也對這些(請參閱我的註釋on MSDN page) MSDN中的錯誤文檔,並嘗試了許多不同的方法來在Siverlight 4中調用GetAssemblies。我的解決方案是安裝Silverlight 5並更改我的silverlight項目以使用Silverlight 5.

我的建議是,方法稍後添加GetAssemblies,通過對Silverlight運行時進行補丁或silverlight更新。

+0

它可能是有道理的,它被添加到一個補丁中。不知道它是否非常乾淨從微軟傢伙。無論如何,在這種情況下,文檔肯定不符合實際的框架。我希望我能更好地瞭解這方面的情況,但我幾乎沒有發現任何東西。我嘗試了在SL5下編譯,它正在工作,但不知道我們可以將整個應用程序移動到SL5 ... – Guillaume

+0

@Guillaume。這取決於您正在使用的其他組件(又名Prism)。但通常所有組件現在均可用於SL5。對我而言,從SL4切換到SL5沒有任何問題。 – Jehof

+0

嗯,我希望有人能夠準確地回答爲什麼,怎麼樣,但似乎並不如此。你的答案似乎相當準確,符合我的猜測,所以我將其標記爲已接受。但是,由於我們使用了一些第三方庫,我無法針對SL5進行編譯。相反,我使用這裏給出的解決方法:http://forums.silverlight.net/post/590383.aspx這足夠滿足我的需求,因爲我真的需要解析解決方案中的程序集,而不是全部。謝謝! – Guillaume