MSBuild评估指纹已过期 [英] MSBuild evaluation fingerprint out of date

查看:82
本文介绍了MSBuild评估指纹已过期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在使用一些庞大的Visual Studio 2010解决方案,并在两者之间共享许多静态库项目.在构建了这些解决方案中的任何一个之后,另一个解决方案将抱怨许多(但不是全部)项目已经过时,尽管实际上构建过程几乎是自然而然的,并且几乎是即时的.

We are working with some huge Visual Studio 2010 solutions with a great many static library projects shared between the two. After building either of these solutions the other solution will complain that many (but not all) of the projects are out of date, though actually building naturally does next to nothing and is almost instant.

按照关于调试MSBuild项目依赖项的问题我可以看到以下几行消息,表明由于不同的评估指纹",项目被认为已过时:

After following the steps on this question on debugging MSBuild project dependencies I can see many lines of the following messages indicating that the projects are considered out of date because of a "different evaluation fingerprint":

[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评估指纹是什么,它们来自何处或可能导致它们像这样脱落的原因时,我完全空白了.

I have come up completely blank while trying to find out what an MSBuild evaluation fingerprint is, where they come from, or what could cause them to be off like this.

考虑到剪切大小,配置要求的复杂性以及我们的日程安排中没有足够的时间来清理此类小麻烦,创建新的项目文件是一个新手.

Creating new project files is a non-starter given their shear size, the complexity of their configuration requirements, and the lack of enough time in our schedule for cleaning up small annoyances like this.

什么是MSBuild评估指纹?如何确定?

What are MSBuild evaluation fingerprints and how are they determined?

推荐答案

我假设您正在使用C ++? 问题在于,用于构建项目的解决方案目录已保存到"* .lastbuildstate"文件中. 只是一个纯文本文件,看起来像:

I assume you are using C++? The issue is that the solution directory which was used to build the project is saved to to "*.lastbuildstate" file. It's just a plain text file which look like:

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

第二行用作项目评估指纹.

The second line is used as project evaluation fingerprint.

第一行包含以下信息(请参阅Microsoft.CppBuild.targets中的第246行) #$(TargetFrameworkVersion):$(PlatformToolSet):$(EnableManagedIncrementalBuild)

First line consist of following information (see line 246 in Microsoft.CppBuild.targets) #$(TargetFrameworkVersion):$(PlatformToolSet):$(EnableManagedIncrementalBuild)

第二行(请参阅Microsoft.CppBuild.targets中的第38行) $(Configuration)|$(Platform)|$(SolutionDir)|

Second line (see line 38 in Microsoft.CppBuild.targets) $(Configuration)|$(Platform)|$(SolutionDir)|

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

Microsoft.CppBuild.targets can be found at %ProgramFiles (x86)%\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets

也许可以修改/扩展MSBuild脚本,使其不使用lastbuildstate文件中的SolutionDir.

Maybe its possible to modify / extend the MSBuild scripts not to use the SolutionDir in the lastbuildstate file.

这篇关于MSBuild评估指纹已过期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆