使用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.0編譯器構建但針對2.0框架的DLL肯定會在只有2.0運行時的機器上運行?關於使用.NET 3.0語法和編譯2.0的建議請
詳情: 迄今爲止,我們一直在使用.NET 2.0編譯器進行構建,以確保與2.0運行時的兼容性。現在我們想要包含一些包含3.0語法的第三方源代碼,但我們仍然需要與2.0運行時兼容。因此,我們正在考慮更改爲用於生產版本的3.0編譯器,但針對2.0框架。
雖然它看起來應該有效,但它有點嚇人,所以我們真的很想聽到試過這個的人。
您可以使用下面的C#3的功能,同時還針對2.0運行時:
您可以使用下面的C#3的功能與2.0運行時有hack:
您不得使用下列內容:
是的,它會工作,因爲編譯器擴展只是語法糖。只要確保它使用正確的服務包。
只要第三方庫不參考不在目標運行庫中的庫,就沒問題。 C#3.0像C#2.0一樣編譯爲IL代碼,所有語法添加僅限於C#語言。
這很好。 .NET 3.5和C#3.0編譯器的輸出與.NET 2.0編譯器是二進制兼容的。
+1 for黑客攻擊。 – Mehrdad 2011-03-10 05:10:35
感謝您提供非常詳細的答案。 – HansA 2011-03-11 04:23:19