Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以根据编译器版本进行条件编译吗?_C#_Visual Studio 2008 - Fatal编程技术网

C# 我可以根据编译器版本进行条件编译吗?

C# 我可以根据编译器版本进行条件编译吗?,c#,visual-studio-2008,C#,Visual Studio 2008,我正在同时维护.NET1.1和.NET3.5c#代码。为此,我创建了两个csproject文件,一个用于.NET1.1,另一个用于.NET3.5 现在,在我的源代码中,我添加了仅在.NET3.5版本中可用的新功能,但我也希望代码在VS2003中编译,而不使用新功能。基于编译器版本是否有条件编译 在C++中,对于宏MSC-Myver,但我在寻找一个C等价物。p> 您可以在每个CSPROJ文件中定义不同的符号,并引用C#source中的符号。您可以在每个CSPROJ文件中定义不同的符号,并引用C#s

我正在同时维护.NET1.1和.NET3.5c#代码。为此,我创建了两个csproject文件,一个用于.NET1.1,另一个用于.NET3.5

现在,在我的源代码中,我添加了仅在.NET3.5版本中可用的新功能,但我也希望代码在VS2003中编译,而不使用新功能。基于编译器版本是否有条件编译


在C++中,对于宏MSC-Myver,但我在寻找一个C等价物。p> 您可以在每个CSPROJ文件中定义不同的符号,并引用C#source中的符号。

您可以在每个CSPROJ文件中定义不同的符号,并引用C#source中的符号。

如果您可以将3.5特定代码保存在单独的文件中,您可以简单地在两个.CSPROJ文件之间分割文件分配(或者在NAnt中使用两个不同的构建目标)-太糟糕的部分类只出现在2.0中,或者这会使代码更容易传播

如果需要在文件级别混合代码,[Conditional()]属性可以过滤掉整个方法,但我不确定编译器是否仍将尝试处理方法中的代码。MSDN表示代码不会编译到IL中,但参数将进行类型检查,但我尚未尝试。更多信息请参见:MSDN链接如下:


如果可能的话,由于您已经有2个项目文件,您可以在每个文件中指定不同的定义来设置版本-如果您可以自己创建宏,则无需查找宏。

如果您可以将3.5特定代码保存在单独的文件中,您可以简单地将文件分配在两个.csproj文件之间(或者在NAnt中使用两个不同的构建目标)-太糟糕的部分类只出现在2.0中,或者这会使代码更容易传播

如果需要在文件级别混合代码,[Conditional()]属性可以过滤掉整个方法,但我不确定编译器是否仍将尝试处理方法中的代码。MSDN表示代码不会编译到IL中,但参数将进行类型检查,但我尚未尝试。更多信息请参见:MSDN链接如下:

如果可能的话,因为您已经有了2个项目文件,您可以在每个文件中指定不同的定义来设置版本-如果您可以自己创建宏,则无需查找宏