c# - 自切换到 VS 2015 并使用 C#6 Roslyn 功能后,Visual Studio Online CI 每日构建失败

标签 c# tfsbuild azure-devops c#-6.0

自从从 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 行。

现在我的构建成功了。

我认为同样可以通过在您的每个项目上设置语言版本 来实现。这可以通过转到您的 .csproj 文件并导航到:

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

有关每个 IDE 中的 Default 设置的一个很好的引用可以找到 here .

Default compilers for each IDE.

关于c# - 自切换到 VS 2015 并使用 C#6 Roslyn 功能后,Visual Studio Online CI 每日构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31830866/

相关文章:

c# - 等待/异步并跳出框框

tfs - 测试TFS2010构建模板的最简单方法

tfs - 在 tfs 2010 中的项目之间共享代码

git - VSTS 发布 pull 请求构建触发器

azure-devops - 当新构建排队时,如何取消所有以前的构建?

c# - 为什么 String.IsNullOrEmpty 比 String.Length 快?

c# - Entity Framework 和存储过程

c# - C#中的Gzip压缩和解压

TFS 构建 - Powershell 还是自定义事件?

python - 无法在 vscode 中导入 azureml