2011-02-07 96 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