我一次維護.net 1.1和.net 3.5 c#代碼。爲此,我創建了兩個csproject文件,一個用於.net 1.1,另一個用於.net 3.5。我可以根據編譯器版本進行條件編譯嗎?
現在,在我的源代碼中,我添加了僅在.net 3.5版本中可用的新功能,但我也希望代碼能夠在VS 2003中編譯,而不需要新功能。無論如何要根據編譯器版本進行條件編譯?
在C++ I can do this by checking the value宏_MSC _VER,但我正在尋找一個C#等效。
我一次維護.net 1.1和.net 3.5 c#代碼。爲此,我創建了兩個csproject文件,一個用於.net 1.1,另一個用於.net 3.5。我可以根據編譯器版本進行條件編譯嗎?
現在,在我的源代碼中,我添加了僅在.net 3.5版本中可用的新功能,但我也希望代碼能夠在VS 2003中編譯,而不需要新功能。無論如何要根據編譯器版本進行條件編譯?
在C++ I can do this by checking the value宏_MSC _VER,但我正在尋找一個C#等效。
您可以在每個CSPROJ文件中定義不同的符號,並引用C#源代碼中的符號。
如果您可以將3.5特定的代碼保存在單獨的文件中,那麼您可以簡單地在兩個.csproj文件之間拆分文件分配(或者在NAnt中使用2個不同的構建目標) - 太差的部分類只能在2.0中出現,或者這將使它更容易傳播代碼...
如果您需要在文件級混合代碼,[條件()]屬性可以過濾掉所有的方法,但我不確定是否編譯器仍然會嘗試處理該方法中的代碼。 MSDN說這段代碼不會被編譯到IL中,但是參數會被類型檢查,但我沒有嘗試過。這裏更多的信息:http://bartdesmet.net/blogs/bart/archive/2006/08/30/4368.aspx和MSDN鏈接是在這裏:http://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute.aspx
如果這是可能的,因爲你有2個項目文件已經,您可以指定在每一個不同的定義設置版本 - 無需找一個宏,當你可以自己做。