Visual Studio 2015をビルドエージェントにインストールせずに、TFS 2012でC#6.0機能を使用してVisual Studio 2015ソリューションをビルドするにはどうすればよいですか(Microsoft Build Tools 2015 RCを使用)
すでにMSBuildツールをインストールしましたが、それでも例外が発生します。ビルドテンプレートにMSBuild14を使用するように指示するにはどうすればよいですか(1つのプロジェクトのみ)
また、BuildAgentにVisual Studio 2012のみがインストールされているのに、TFS 2012が非同期でコンパイルして(c#5.0)問題なく待機するのはなぜですか?
BuildProcessTemplateのToolPathを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コンパイラをインストールすると、同じエラーが発生します。
コマンドラインを使用してプロジェクトをコンパイルすると、まったく同じエラーが発生します。ただし、まったく同じ引数を使用してコマンドラインを使用すると、開発マシンでエラーは発生しません。
これは、コマンドラインで取得する例外です。
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)
TFS2013 U5を使用しましたが、同じになります。
/tv:14.0/p:GenerateBuildInfoConfigFile = false /p:VisualStudioVersion=14.0
コンパイルテストとVSユニットテストの両方が正常に実行されています。
どちらかを使用してみてください
/p:VisualStudioVersion=14.0
または
/tv:14
ビルド引数で
JiříZídekの答えは正しいですが、重要な詳細が1つ欠けていました。 TFS 2012 Update 2で動作させるには、次のことを行う必要がありました。
MSBuild Arguments
ビルド定義で/p:VisualStudioVersion=14.0
(つまり、Visual Studio 2015モード)install-package Microsoft.Net.Compilers
私にとって違いを生んだのは#3でした。
2015年をバイパスしてTFS2012とVS2017を使用している方は、私の回答に従ってください ここにリンクの説明を入力してください