2011-03-10 34 views
1

使用3.0編譯器構建但針對2.0框架的DLL肯定會在只有2.0運行時的機器上運行?關於使用.NET 3.0語法和編譯2.0的建議請

詳情: 迄今爲止,我們一直在使用.NET 2.0編譯器進行構建,以確保與2.0運行時的兼容性。現在我們想要包含一些包含3.0語法的第三方源代碼,但我們仍然需要與2.0運行時兼容。因此,我們正在考慮更改爲用於生產版本的3.0編譯器,但針對2.0框架。

雖然它看起來應該有效,但它有點嚇人,所以我們真的很想聽到試過這個的人。

回答

3

您可以使用下面的C#3的功能,同時還針對2.0運行時:

  • 自動實現的屬性
  • 對象/集合初始化
  • 隱式類型的局部變量/數組
  • 匿名類型
  • Lambda表達式

您可以使用下面的C#3的功能與2.0運行時有hack

  • 擴展方法

您不得使用下列內容:

  • LINQ擴展
  • 查詢語法
+0

+1 for黑客攻擊。 – Mehrdad 2011-03-10 05:10:35

+0

感謝您提供非常詳細的答案。 – HansA 2011-03-11 04:23:19

0

是的,它會工作,因爲編譯器擴展只是語法糖。只要確保它使用正確的服務包。

0

只要第三方庫不參考不在目標運行庫中的庫,就沒問題。 C#3.0像C#2.0一樣編譯爲IL代碼,所有語法添加僅限於C#語言。

0

這很好。 .NET 3.5和C#3.0編譯器的輸出與.NET 2.0編譯器是二進制兼容的。