Подтвердить что ты не робот

Сборка С# 6.0 на TFS 2012

Как я могу построить решение Visual Studio 2015 с использованием функций С# 6.0 на TFS 2012 без установки Visual Studio 2015 на агенте сборки (используя Microsoft Build Tools 2015 RC).

Я уже установил MSBuild Tools, но у меня все еще есть исключения. Как я могу указать шаблон моей сборки для использования MSBuild 14 (Только для одного проекта)

И почему мой TFS 2012 компилирует async и ждет (С# 5.0) без каких-либо проблем, в то время как BuildAgent только установил Visual Studio 2012?

Я попытался изменить ToolPath моего BuildProcessTemplate на MSBuild/14.0/, но я получаю ошибку сборки:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.CSharp.targets(316): "csc2.exe" вышел с кодом -532462766.

Установка компилятора Microsoft.Net.Compilers 1.0.0-rc2 дает ту же ошибку.

Если я скомпилирую проект с помощью командной строки, я получаю ту же ошибку/хотя на моей машине dev нет ошибки при использовании командной строки с теми же аргументами.

Это Исключение, которое я получаю в командной строке:

C:\Program Files (x86)\MSBuild\14.0\bin\csc2.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE /highentro.....
     Unhandled Exception: System.InvalidProgramException: Common Language Runtime detected an invalid program.
        at System.Collections.Immutable.SecurePooledObject`1.Use[TCaller](TCaller& caller)
        at System.Collections.Immutable.SortedInt32KeyNode`1.Enumerator.PushLeft(SortedInt32KeyNode`1 node)
        at System.Collections.Immutable.SortedInt32KeyNode`1.Enumerator..ctor(SortedInt32KeyNode`1 root)
        at System.Collections.Immutable.ImmutableDictionary`2.Enumerator..ctor(SortedInt32KeyNode`1 root, Builder builder)
        at Microsoft.CodeAnalysis.RuleSet.GetDiagnosticOptionsFromRulesetFile(Dictionary`2 diagnosticOptions, String resolvedPath, IList`1 diagnosticsOpt, CommonMessageProvider messageProviderOpt)
        at Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser.Parse(IEnumerable`1 args, String baseDirectory, String additionalReferencePaths)
        at Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser.CommonParse(IEnumerable`1 args, String baseDirectory, String additionalReferencePaths)
        at Microsoft.CodeAnalysis.CommonCompiler..ctor(CommandLineParser parser, String responseFile, String[] args, String baseDirectory, String additionalReferencePaths)
        at Microsoft.CodeAnalysis.CSharp.CSharpCompiler..ctor(CSharpCommandLineParser parser, String responseFile, String[] args, String baseDirectory, String additionalReferencePaths)
        at Microsoft.CodeAnalysis.CSharp.CommandLine.Csc..ctor(String responseFile, String baseDirectory, String[] args)
        at Microsoft.CodeAnalysis.CSharp.CommandLine.Csc.Run(String[] args)
        at Microsoft.CodeAnalysis.BuildTasks.BuildClient.RunWithConsoleOutput(String[] args, RequestLanguage language, Func`2 fallbackCompiler)
        at Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String[] args)
        at Microsoft.CodeAnalysis.CSharp.CommandLine.Csc2.Main(String[] args)
4b9b3361

Ответ 1

Я использовал TFS2013 U5, но он будет таким же:

  • установлен RTM VS2015 на машине BuildServer.
  • поместите это в аргументы MSBuild в Process part of BuildTemplate

/tv:14.0/p: GenerateBuildInfoConfigFile = false /p:VisualStudioVersion=14.0

Оба теста компиляции и VS-модуля теперь работают нормально.

Ответ 2

Попробуйте использовать

/p:VisualStudioVersion=14.0

или

/tv:14 

В ваших аргументах построения

Ответ 3

Ответ Йиржи Зидека верен, но ему не хватает одной важной детали. Я должен был сделать следующее, чтобы найти работу в TFS 2012 Update 2:

  • установить Visual Studio 2015 на сервер сборки
  • установите MSBuild Arguments в определении сборки /p:VisualStudioVersion=14.0 (то есть режим Visual Studio 2015)
  • в каждом проекте, использующем синтаксис С# 6, установите пакет NuGet Microsoft.Net.Compilers install-package Microsoft.Net.Compilers

Это было для меня 3-е место.