C# 能否为C版本添加预处理器指令?

C# 能否为C版本添加预处理器指令?,c#,version,preprocessor-directive,C#,Version,Preprocessor Directive,有没有办法添加一个预处理器指令来比较编译器使用的C版本 例如: public T MyMethod<T>() { #if CS_7 return default; // Feature 'default literal' is not available in C# 7.0. Please use 7.1 or greater. #else return null; // Ignore the fact that this won't work, it isn't t

有没有办法添加一个预处理器指令来比较编译器使用的C版本

例如:

public T MyMethod<T>()
{
#if CS_7
    return default; // Feature 'default literal' is not available in C# 7.0. Please use 7.1 or greater.
#else
    return null; // Ignore the fact that this won't work, it isn't the point of the question
#endif
}
public myt方法()
{
#如果CS_7
return default;//功能“default literal”在C#7.0中不可用。请使用7.1或更高版本。
#否则
return null;//忽略这一事实,这不是问题的关键
#恩迪夫
}

NET版本会是我们的发展方向吗?对于同一个项目,使用的编译器是否会有所不同?(即,如果不同的员工使用不同版本的Visual Studio)

显然您不能,但使用的C#版本取决于项目中使用的框架版本(),该版本提供默认的C#版本,除非通过类似属性的方式手动配置(请参阅链接文档)


因此,大多数需要C#版本预处理器指令的情况都可以通过在项目中添加或使用项目文件中的属性强制特定的C#版本来解决。

一旦编译完成,C#版本就无关紧要了。您是否打算以源代码形式交付此文件?此项目在多个其他项目中用作子模块(git),因此我猜答案是肯定的?是否有理由将此文件编译到每个项目中,而不是在单独的程序集中引用?设置私有NuGet服务器(内部部署或托管)并向其发布包非常容易。我可以向我的上级提及这个想法,但我不能做出这个决定。