即使安装了Microsoft.Net.Compilers,C#6.0构建也会在TFS Build上失败

时间:2016-08-31 22:41:38

标签: tfs c#-6.0

我的公司有TFS 2013.
我有一个使用C#6.0功能的项目 我的团队无法直接访问构建服务器。 VS2015尚未安装在那里,但管理服务器的人正在寻找安装2015构建工具。

与此同时,我已经安装了C# 6.0 TFS Builds的答案中提到的Microsoft.Net.Compilers NuGet包以及其他几个问题。

解决方案中的某些项目已经安装了它: (Asp.Net MVC 5项目和Web API项目。)

构建解决方案时,TFS将软件包中的Rosyln编译器用于某些项目,将默认编译器用于其他项目。

  • 我已删除并重新添加了该包。
  • 我尝试在软件包的1.0.0,1.1.0和1.3.2之间切换。
  • 我已经并排打开.csproj文件以寻找细微差别。
  • 我从同一个项目中创建了多个解决方案和多个构建定义,以查看某些组合是否导致了问题。
    • 其中一个项目总是在构建一部分时使用默认编译器构建,并在构建为另一个构建时使用Roslyn编译器构建。

这两个Web项目从不使用Roslyn编译器。 还有3个其他库,一个控制台应用程序,以及包含单元/集成测试的手工项目。 除了一个项目(其中一个库)的行为不同,取决于它所在的构建,所有项目在使用的编译器中看起来都是一致的

我在这里缺少什么?为什么TFS可以将包编译器用于某些项目而不用于其他项目?

构建错误的采样: 使用nameof:

SomeController.cs (53): The name 'nameof' does not exist in the current context

静态使用:

RedactedTests.cs (5): Identifier expected; 'static' is a keyword
RedactedTests.cs (5): Expected class, delegate, enum, interface, or struct

null合并运算符:

InterestingClassName.cs (40): Invalid expression term '.'
InterestingClassName.cs (40): Syntax error, ':' expected
InterestingClassName.cs (40): Invalid expression term '.'
InterestingClassName.cs (40): Syntax error, ':' expected

表达身体性质:

MyClass.cs (11): ; expected
MyClass.cs (11): Method must have a return type
MyClass.cs (11): Type expected

1 个答案:

答案 0 :(得分:0)

如果解决方案是使用目标版本,也许使用.sln文件的版本,请注意这一点。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1

你能尝试改变吗?