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# 6
或 Roslyn
.
相关的内容
我需要更改什么才能使我的每日构建再次运行?
编辑
这是一个错误示例(对于自动属性,它们都是一样的)。
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。
自从 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# 6
或 Roslyn
.
我需要更改什么才能使我的每日构建再次运行?
编辑
这是一个错误示例(对于自动属性,它们都是一样的)。
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。