2016-10-20 13 views
1

ビルド時にVisual Studioの出力ペインの左側の列にある数字の意味は何年か疑問に思っています。一般に、ソリューションの各プロジェクトが構築されるにつれて増加しますが、それらも同様に跳躍します。たとえば:最大数は、私は2番目に説明しましょうということに達するまで、ビルドのVisual Studioの開始時ビルド時にVisual Studioの出力ペインの左側の列に表示される数字の意味

1>------ Rebuild All started: Project: MyCompany.MyProject1, Configuration: Debug Any CPU ------ 
2>------ Rebuild All started: Project: MyCompany.MyProject2, Configuration: Debug Any CPU ------ 
3>------ Rebuild All started: Project: MyCompany.MyProject3, Configuration: Debug Any CPU ------ 
4>------ Rebuild All started: Project: MyCompany.MyProject4, Configuration: Debug Any CPU ------ 
4>C:\SourcePath\MyApplication\MyNamespace\Views\MyFeature\MyCompany.MyProject2.csproj(172,3): warning MSB4011: "C:\MyPath1.CSharp.targets" cannot be imported again. It was already imported at "C:\MyPath2\MyCompany.Build.CustomAfterMicrosoftCSharpTargets.props (41,5)". This is most likely a build authoring error. This subsequent import will be ignored. 
4> Restoring NuGet packages... 
4> To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'. 
4> Feeds used: 
4> C:\Users\MyUser\AppData\Local\NuGet\Cache 
4> C:\Users\MyUser\.nuget\packages\ 
4> https://api.nuget.org/v3/index.json 
4> http://nuget.MyCompany.com/nuget/api/v2/ 
4> C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\ 
4> 
4> All packages listed in MyPath5\packages.config are already installed. 
4> MyCompany.MyProject4 -> MyPath6\MyCompany.MyProject4.dll 
5>------ Rebuild All started: Project: MyCompany.MyNamespace.This.Something, Configuration: Debug Any CPU ------ 
5> MyCompany.MyNamespace.This.Something -> C:\SourcePath\MyApplication\MyNamespace\ThisLayer\Something\bin\Debug\MyCompany.MyNamespace.This.Something.dll 
3>C:\SourcePath\MyApplication\MyNamespace\Views\MyFeature\MyCompany.MyProject2.csproj(172,3): warning MSB4011: "C:\MyPath1.CSharp.targets" cannot be imported again. It was already imported at "C:\MyPath2\MyCompany.Build.CustomAfterMicrosoftCSharpTargets.props (41,5)". This is most likely a build authoring error. This subsequent import will be ignored. 
3> Restoring NuGet packages... 

答えて

1

は、あなたが構築するプロジェクトごとに一意の番号を割り当てます。あなたの場合、これはあなたが見ている最初の4行です:X>------ Rebuild All started

今VS(あなたのコンパニオンMSBuildと一緒に)あなたのプロジェクト間の依存関係を解決しようとします。次に、プロジェクトは、互いに依存しているため、順番に次々に構築されなければならない単位にグループ化されます。しかし、グループ自体はそれらの間に依存関係を持たず、したがって相互に影響することなく並行してコンパイルすることができます。

並列ビルドの最大数は、VSでTools --> Options --> Project and Solutions --> Build and Run --> maximum number of parallel project buildsの下で変更できます。私の場合のデフォルト値は4並列ビルドですが、個々のデフォルトはCPUコアの数であり、C#およびC++プロジェクトにのみ影響し、最大数は現在32であることがdocumentedです。論理コアまたは物理コアを意味しますが、論理コアは私にとって最も意味のあるものです)。

出力ウィンドウの各行の冒頭にある各番号は、この番号に割り当てられているプロジェクトのビルド進行状況に属します。

したがって、MyCompany.MyProject4が(おそらく純粋にランダムな)最初に構築され、4>で始まるすべての行がそのプロジェクトに属しています。 VSが終了すると、この空きスロットを使用することが決定され、別のプロジェクトMyCompany.MyNamespace.This.Somethingがビルドプロセスに入り、番号5>が割り当てられます。

このプロジェクトのビルドが始まりますが、突然、の番号3>のビルドが完了し、ビルドメッセージが表示されます。

したがって、数値のシャッフルは、実際に出力が出力されている4つの並列スレッドの結果です。実際、これらのスレッドはそれぞれ実際にはWindowsタスクマネージャで表示できるMSBuild.exeの別のプロセスです。

すべてのプロジェクトに他のプロジェクト依存性が1つしかない場合(各プロジェクトは1回のみ参照されます)、それらを一緒にビルドすると、並列ビルドは表示されません。同時。 (まだビルドされていないものに依存することはできません)

documentation of Visual Studiodocumentation of MSBuildには、並列ビルドに関するもう少し詳細な情報があります。

関連する問題