0

私たちは、2 つの間で非常に多くの静的ライブラリ プロジェクトを共有する、いくつかの巨大な Visual Studio 2010 ソリューションを使用しています。これらのソリューションのいずれかをビルドした後、他のソリューションはプロジェクトの多く (すべてではない) が古くなっていると文句を言うでしょうが、実際にはビルドは自然にほとんど何もせず、ほとんど瞬時に行われます。

MSBuild プロジェクトの依存関係のデバッグに関するこの質問の手順に従うと、「異なる評価フィンガープリント」のためにプロジェクトが古くなっていると見なされることを示す次のメッセージの多くの行が表示されます。

[8444] Project not up to date because the last build has different evaluation fingerprint. 
[8444] devenv.exe Information: 0 : 
[8444] Project not up to date because the last build has different evaluation fingerprint. 
[8444] devenv.exe Information: 0 : 

MSBuild 評価フィンガープリントとは何か、それらがどこから来たのか、または何がこのようにオフになる可能性があるのか​​ を調べようとしているときに、私は完全に空白になりました。

新しいプロジェクト ファイルを作成することは、そのサイズ、構成要件の複雑さ、およびこのような小さな煩わしさをクリーンアップするための十分な時間がスケジュールにないことを考えると、初心者には適していません。

MSBuild 評価フィンガープリントとは何ですか? また、それらはどのように決定されますか?

4

1 に答える 1

2

C++を使用していると思いますか?問題は、プロジェクトのビルドに使用されたソリューション ディレクトリが「*.lastbuildstate」ファイルに保存されることです。次のような単なるプレーンテキストファイルです。

#v4.0:v100:false
Debug|Win32|C:\MyPath\ToSolution\|

2 行目は、プロジェクト評価フィンガープリントとして使用されます。

最初の行は次の情報で構成されます (Microsoft.CppBuild.targets の 246 行目を参照) #$(TargetFrameworkVersion):$(PlatformToolSet):$(EnableManagedIncrementalBuild)

2 行目 (Microsoft.CppBuild.targets の 38 行目を参照) $(Configuration)|$(Platform)|$(SolutionDir)|

Microsoft.CppBuild.targets は次の場所にあります。%ProgramFiles (x86)%\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets

おそらく、lastbuildstate ファイルで SolutionDir を使用しないように MSBuild スクリプトを変更/拡張することができます。

于 2013-12-03T08:58:45.587 に答える