Visual Studio 在线 CI 自从切换到 VS 2015 并使用 C# 6 Roslyn 功能后每日构建失败

Visual Studio Online CI daily builds fail since switching to VS 2015 and using C# 6 Roslyn features

自从 VS 2013 切换到 VS 2015 并使用了一些新的 C# 6 功能后,我们在 Visual Studio Online 的日常构建开始失败。

构建中的错误都指向新的自动 属性 功能,但我认为所有新功能都会导致此问题。

一段导致失败的示例代码正在使用:

public int MyFavouriteNumber { get; set; } = 7;

而不是

private int _myFavouriteNumber = 7;
public int MyFavouriteNumber 
    { 
        get { return _myFavouriteNumber; } 
        set { _myFavouriteNumber = value; } 
    }

我查看了我的构建配置,但我看不到任何与 C# 6Roslyn.

相关的内容

我需要更改什么才能使我的每日构建再次运行?

编辑

这是一个错误示例(对于自动属性,它们都是一样的)。

Models\Core\Bookings\BookingProduct.cs (29, 0) Invalid token '=' in class, struct, or interface member declaration

Models\Core\Bookings\BookingProduct.cs (29, 0) Invalid token '(' in class, struct, or interface member declaration

下面是有问题的行:

public virtual IList<BookingPricingAddon> AddonsPricing { get; set; } = new List<BookingPricingAddon>();

TheLethalCoder 的评论为我指明了正确的方向。

问题是我的所有项目都使用 Default 作为目标语言版本,如果您使用 VS 2015 就没问题,但是,我的 .sln 文件有以下开场 3 行:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0

显然,Visual Studio Online 使用它来确定要使用哪个版本的 MSBuild。 (它正在使用 12)。

将我的解决方案升级为以下内容:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0

允许 Visual Studio Online 看到我的 IDE 使用 Roslyn,因此使用 MSBuild 14

我发现最简单的升级方法是单击 Solution Explorer 中的解决方案,然后转到 File > Save As > Solution File 并覆盖现有的解决方案文件,它只会升级前 3 行。

我的构建现已成功。

我认为通过在您的每个项目上设置 Language Version 也可以达到同样的效果。这可以通过转到 .csproj 文件并导航至:

来完成
Properties > Build > Advanced > Language Version > C# 6.0

关于每个 IDE 中的 Default 设置的一个很好的参考可以找到 here