2008-09-26 52 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个项目文件已经,您可以指定在每一个不同的定义设置版本 - 无需找一个宏,当你可以自己做。

相关问题