最新检查声称自 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)\,后者是路径而不是文件。

&lt;!--&lt;ProgramDataBaseFileName&gt;$(Configuration)\&lt;/ProgramDataBaseFileName&gt;--&gt;&lt;ProgramDataBaseFileName&gt;$(Configuration)\$(TargetName).pdb&lt;/ProgramDataBaseFileName&gt; 可以解决这个问题。

注意:由于 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 以来缺少构建输出的主要内容,如果未能解决你的问题,请参考以下文章

VS2013 - 构建失败(新表单项目)

vs2017有必要升级2019

在 TFS 构建配置上缺少 Visual Studio 的最新版本 2019 [重复]

vs2017rc和vs2017啥意思

VS2019继承的winforms控件未编译

自最近升级以来新生成的 GeneratedMSBuildEditorConfig 文件