爲什麼我可以在面向.NET 2.0的Visual Studio 2008 Windows項目中使用Object Initializers
,但不能 - 在面向.NET 2.0的ASP.NET項目中?爲什麼我不能在ASP.NET 2.0中使用對象初始值設定項?
我明白,這是C#3.0的功能,但不要 - 爲什麼這可能在.NET 2.0項目中使用。
爲什麼我可以在面向.NET 2.0的Visual Studio 2008 Windows項目中使用Object Initializers
,但不能 - 在面向.NET 2.0的ASP.NET項目中?爲什麼我不能在ASP.NET 2.0中使用對象初始值設定項?
我明白,這是C#3.0的功能,但不要 - 爲什麼這可能在.NET 2.0項目中使用。
很可能是因爲ASP.Net面向2.0框架的東西假設它將運行在可能需要編譯一些代碼的模式下。由於它在2.0模式下運行,因此它將在該階段獲得2.0編譯器(因此依賴於3.0編譯器的任何內容都將失敗)
當從'普通'項目中定位2.0代碼庫時,編譯完成,依靠3.0編譯器功能是好的。
當您定位.NET 2.0運行時時,您還將定位到C#2.0編譯器。該版本的編譯器不理解3.0功能。
這是一個現有的question,它處理在.NET 2.0項目中使用C#3.0功能。它解釋了哪些C#3.0功能可用,哪些不是以及如何使用它們。
爲了幫助您解決任何特定問題,我們需要具體的細節。
有關C#中高級功能以及它們如何從C#1.0發展到3.0的最佳信息源是Jon Skeet's book。他經常在這裏,甚至可能會提供一些額外的見解。但是,你真的應該有這本書。
正常的ASP.NET網站即時編譯,這意味着它將使用編譯器可用於Web服務器上的該虛擬目錄。如果它設置爲ASP.NET 2.0,它將使用2.0編譯器(而不是針對.NET 2.0的3.0編譯器)。 我假設您將網站轉換爲網絡應用程序時,您將能夠定位3.0並仍然使用某些3.0功能。我建議嘗試一下,我會的,但我現在沒有時間。讓我們知道它是否有效;-)