2017-09-20 25 views
1

Cleanオプションが無効でソースファイルが変更されていないのに(ソースフェッチでは何も変更されていない)、VSTS msbuildタスクがCoreCompileの実行を継続しているようです。VSTS Visual Studioビルドタスクはインクリメンタルではありません。

ローカルでローカルまたは直接ビルドマシンでmsbuildを実行すると、予想外の動作をします。変更されていないプロジェクトはすべて再構築されません。 CoreCompileは実行されません。csc.exe

答えて

1

これは、MSBuildが自動的に生成してコンパイルに挿入する "TargetFrameworkMoniker"ファイルがテンポラリディレクトリに書き込まれていること、つまりSystem.IO.Path.GetTempPath()を実行したときに得られるものであることがわかりました。

ただし、VSTSエージェントは独自のテンポラリディレクトリ(_temp)を指定し、ビルドごとにクリアするようです。これは良い動作のようです - それを修正する必要があるMSBuildです(IMO)。

:あなたがファイルの生成を無効にすることができ、また

/p:TargetFrameworkMonikerAssemblyAttributesPath=$(Build.Repository.LocalPath)\temp.moniker.cs 

あなたのプロジェクトが混在フレームワークを使用する場合動作しない場合があります、という迅速かつ汚い修正は、このMSBuildのオプションを追加することです

/p:GenerateTargetFrameworkAttribute=False 
関連する問題