2008-09-26 53 views
1

我一次維護.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#等效。

回答

1

您可以在每個CSPROJ文件中定義不同的符號,並引用C#源代碼中的符號。

0

如果您可以將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個項目文件已經,您可以指定在每一個不同的定義設置版本 - 無需找一個宏,當你可以自己做。

相關問題