关于 C# 6.0 中 "using static" 的重大更改,我如何处理在 VS 2013 和 VS2015 中编辑的 C# 代码库?

How do I handle a C# codebase being edited in both VS 2013 and VS2015 with regards to the breaking change of "using static" in C# 6.0?

我有一个 C# 代码库,它正在 VS 2013 和 VS 2015 CTP 6 中进行编辑。随着 CTP 6 的出现,C# v6 需要 "using static" 一些导入。

有没有一种方法可以确定正在使用哪个版本(VS 或 C#),以便我可以使用预处理器指令来使用 "using" 或 "using static"?

例如

#if CS6
   using static ...
#else
   using ...
#endif

预处理器指令是我最初的想法。如果有另一种方法可以做到这一点,我洗耳恭听。

如果它不破坏以前可编译的代码,则不是重大更改。由于 6.0 之前的 C# 中没有静态导入,因此这不是重大更改。

也不是必须的。那将是一个真正的突破性变化。

如果您想同时使用 Visual Studio 2013 和 Visual Studio 2015 的代码库,则必须使用最大公分母 C# 5.0。

静态using不应该需要;它是添加到 C# 6.0 中的语法糖。你应该总是能够指定静态方法的完全限定名称来调用它,例如而不是

using System.Environment;

// class and method declaration elided

var path = GetFolderPath(...);

你总是可以

// no static using here!

// class and method declaration elided

var path = System.Environment.GetFolderPath(...);

或者,如果您没有自己的 class 称为 System(您为什么要这样做?):

// still no static using here!
using System;

// class and method declaration elided

var path = Environment.GetFolderPath(...);

您可以按照此处描述的说明尝试在 Visual Studio 2013 中启用 C# 6.0 支持:How to enable C# 6.0 feature in Visual Studio 2013?

不过我还没有测试过。