最新检查声称自 VS 2019 以来缺少构建输出
Posted
技术标签:
【中文标题】最新检查声称自 VS 2019 以来缺少构建输出【英文标题】:Up-To-Date check claims missing build output since VS 2019 【发布时间】:2019-06-03 13:40:46 【问题描述】:由于我使用的是 Visual Studio 2019,我的一些旧项目每次都会重新构建,即使没有任何变化。构建输出状态如下:
最新检查:项目:..\MyProject.vcxproj,配置:调试 Win32
项目不是最新的:缺少构建输出“d:\mysolution\myproject\debug\”
提到的输出目录确实存在,但大写 (D:\MySolution\MyProject\Debug)
在 Visual Studio 2017 中构建相同的项目,MSBuild 可以正确检测到什么都没有发生变化:
最新检查:项目:MyProject,配置:调试 Win32
所有输出都是最新的。
有问题的项目是托管的 C++ 项目,配置的平台工具集是“Visual Studio 2013 (v12)”。
【问题讨论】:
submit it to Microsoft 抱歉,我现在无法重现同样的问题。您能否分享一个具有相同问题的示例,以便我可以直接复制和检查? 【参考方案1】:试试:
-
清理解决方案,关闭解决方案和VS
删除 .suo 文件(或 .vs 文件夹)以及 bin 和 obj 文件夹
打开 VS2019,重新引用 dll,更改 .xxproj 文件中的引用路径
看到这个similar issue。
如果问题仍然存在,请检查您是否将输出路径设置为绝对路径。默认情况下,输出目录应该是相对路径:
更新:
现在我想我已经找到了问题的原因,您的项目文件中的一些错误会扰乱构建过程。
请检查:
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
...
<ProgramDataBaseFileName>$(Configuration)\</ProgramDataBaseFileName>
<!--<ProgramDataBaseFileName>$(Configuration)\$(TargetName).pdb</ProgramDataBaseFileName>-->
<CompileAsManaged>true</CompileAsManaged>
<PrecompiledHeaderFile />
</ClCompile>
ProgramDataBaseFileName 的值为$(Configuration)\
,即debug\
。所以构建过程认为存在一个名为debug\
的构建输出file,但实际上并不存在。那么Up-To-Date检查就不能正常工作了!
解决方法如下:
因此,您可以评论该语句或为其赋予正确的值,例如 $(Configuration)\$(TargetName).pdb
,而不是 $(Configuration)\
,后者是路径而不是文件。
<!--<ProgramDataBaseFileName>$(Configuration)\</ProgramDataBaseFileName>-->
或<ProgramDataBaseFileName>$(Configuration)\$(TargetName).pdb</ProgramDataBaseFileName>
可以解决这个问题。
注意:由于 Debug|win32 和 Release|win32 的 ItemDefinitionGroup 中都存在 ProgramDataBaseFileName
,因此您应该更正 .vcxproj 文件中两处中的值。
【讨论】:
尝试了 1 和 2 并检查了输出目录(它的“$(Configuration)\”)。我正在测试的项目没有引用(mscorlib.dll 除外)。 “重新引用 dll,更改 .xxproj 文件中的引用路径”是什么意思? 如果项目没有额外的引用。试了 1 & 2 后的结果如何,同样的问题仍然存在?如果是这样,您能否分享一个简单的示例来帮助重现它。 (我的意思是你可以复制一个有这个问题的项目,把里面的核心代码删掉,我们不需要个人代码) 问题在 1 和 2 后仍然存在。我如何联系您获取样品? *** 不允许我放置文件共享的链接。 你可以通过一盘或github分享。我认为 one-drive 链接和 github 链接已获得批准。 (不要忘记删除个人核心代码) @user2900970 我已经重现了这个问题。我正在尝试找出原因并检查是否存在解决方法。另外,我将下载 VS2013 以检查是否所有托管的 C++ 项目都会在 VS2019 中导致此问题。我将在这里分享任何更新。感谢您的项目帮助我重现它!以上是关于最新检查声称自 VS 2019 以来缺少构建输出的主要内容,如果未能解决你的问题,请参考以下文章