MSBuild的评价指纹过时(MSBuild evaluation fingerprint out

2019-10-31 03:02发布

我们正在与一些巨大的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的评价指纹和他们是如何确定的?

Answer 1:

我假设你使用的是C ++? 问题是,这是用来构建项目的解决方案目录保存到为“* .lastbuildstate”文件。 这只是看起来像一个纯文本文件:

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

第二行作为项目评估指纹。

第一行包含以下信息(见Microsoft.CppBuild.targets线246) #$(TargetFrameworkVersion):$(PlatformToolSet):$(EnableManagedIncrementalBuild)

二线(见Microsoft.CppBuild.targets线38) $(Configuration)|$(Platform)|$(SolutionDir)|

Microsoft.CppBuild.targets可以被发现在%ProgramFiles (x86)%\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets

也许它可以修改/扩展的MSBuild脚本不使用SolutionDir在lastbuildstate文件。



文章来源: MSBuild evaluation fingerprint out of date