2011-02-07 98 views
3

问题: 从Visual Studio 2010创建新的SilverLight应用程序项目时,SilverLight应用程序项目的引用指向.Net Framework 2.0程序集。但是我需要使用自.NET Framework 4.0以来才有的一些功能。如何从SilverLight 4应用程序项目定位.NET Framework 4.0?

已经做了几次谷歌搜索,但没有得出结论。

有没有办法在Vs2010中更新SilverLight应用程序项目的目标.Net Framework版本?

回答

9

Silverlight和全功能.NET框架是不同的东西,它们恰恰分享了很多共同点。这些版本号更令人困惑,但这里有...

Silverlight 1没有托管代码,所以我会跳过。

Silverlight 2,3和4对于各种程序集(System.dll,System.Core.dll等等)都具有“2.0.5.0”版本号 - “5”是为了查看就像Silverlight的“S”一样,并且与完整的.NET Framework使用的“2.0.0.0”相比也是独一无二的。这很重要,因为Silverlight是.NET Framework的一个子集,所以如果应用程序加载DLL,他们可能会认为2.0.0.0意味着“我可以使用API​​ Foo”,但该API可能是Silverlight的子集,至少“ 2.0.5.0“暗示”这不完全相同“。

Silverlight使用名为“CoreCLR”的CLR,而完整的.NET Framework只使用“CLR” - CoreCLR是完整CLR的子集,并没有其全部功能(但可以在Mac上运行,所以这是一个优点)。 Silverlight 2和3使用CoreCLR 2,它非常接近完整的CLR 2(由.NET Framework 2-3.5使用)。 Silverlight 4使用CoreCLR 4,它与CLR 4完全接近(由.NET Framework 4使用)。

为了在这些作品中引发另一个问题,Silverlight for Windows Phone 7使用了.NET Compact Framework,它还有一个不同的CLR(NETCF CLR)。

最后需要注意的是,最近微软已经启动了“便携式库项目”(参见这里:http://blogs.msdn.com/b/bclteam/archive/2011/01/19/announcing-portable-library-tools-ctp-justin-van-patten.aspx),其目的是为了更容易地构建可运行于各种“类似.NET”事物的类库在那里(完整的.NET,Silverlight,Windows Phone,Xbox上的XNA,或许还有其他像Mono),开发人员不必担心上面提到的东西。

希望这可以让事情更清楚,但它相当混乱。所以要回到你的问题 - 你不能“从Silverlight的目标.NET 4”,但如果有.NET 4的CLR或基类库的功能,它也可能在Silverlight 4中。如果你可以列出你正在寻找的特定功能,我可以告诉你它们是否在Silverlight 4中。

+0

很好的答案!这解释了我需要的一切。非常感谢! – MagicGuru 2011-02-09 04:30:25