2012-05-14 22 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