原因是Silverlight使用CLR的并行实现(称为CoreCLR)。尽管它们公开了大致相同的服务并符合相同的规范,但用于实现运行时的核心库在Silverlight和.Net之间是不同的。这里有一篇深入探讨CoreCLR的好文章:http://msdn.microsoft.com/en-us/magazine/cc721609.aspx
我相信自Silverlight 4以来,您可以这样做,但在早期版本中不行。MSDN有一篇文章详细介绍。 在此之前,程序集的可移植性并未融入.NET框架,因此没有一组公共程序集可以同时针对Silverlight和桌面框架。至少,这是我从上述文章中所读到的...