自VS 2019以来,最新检查声称缺少构建输出

时间:2019-06-03 13:40:46

标签: msbuild visual-studio-2019

由于我使用的是Visual Studio 2019,因此即使没有任何更改,我每次都会重新构建一些旧项目。构建输出状态如下:

  

最新检查:项目:.. \ MyProject.vcxproj,配置:调试Win32

     

项目不是最新的:缺少构建输出'd:\ mysolution \ myproject \ debug \'

提到的输出目录确实存在,但大小写( D:\ MySolution \ MyProject \ Debug

MSBuild在Visual Studio 2017中构建相同的项目,可以正确检测什么都没有更改:

  

最新检查:项目:MyProject,配置:调试Win32

     

所有输出都是最新的。

有问题的项目是托管的C ++项目,配置的平台工具集是“ Visual Studio 2013(v12)”。

1 个答案:

答案 0 :(得分:0)

尝试:

  1. 清洗溶液,关闭溶液,然后VS
  2. 删除.suo文件(或.vs文件夹)以及bin和obj文件夹
  3. 打开VS2019,重新引用dll,更改.xxproj文件中的引用路径

请参阅此similar issue

如果问题仍然存在,请检查是否已将输出路径设置为绝对路径。默认情况下,始终将输出目录设置为相对路径:

enter image description here

更新

现在我想我已经找到了问题的原因,您的项目文件中的一些错误使构建过程变得混乱。

请检查以下内容:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      ...
      <ProgramDataBaseFileName>$(Configuration)\</ProgramDataBaseFileName>
  <!--<ProgramDataBaseFileName>$(Configuration)\$(TargetName).pdb</ProgramDataBaseFileName>-->
      <CompileAsManaged>true</CompileAsManaged>
      <PrecompiledHeaderFile />
    </ClCompile>

ProgramDataBaseFileName的值为$(Configuration)\,即debug\。因此,构建过程认为存在名为debug\的构建输出文件,但实际上不存在。然后最新检查无法正常工作!

以下是解决方法:

因此,您可以注释该语句,或者给它正确的值,例如$(Configuration)\$(TargetName).pdb而不是$(Configuration)\,后者不是文件路径。

<!--<ProgramDataBaseFileName>$(Configuration)\</ProgramDataBaseFileName>--><ProgramDataBaseFileName>$(Configuration)\$(TargetName).pdb</ProgramDataBaseFileName>可以解决此问题。

注意:由于ProgramDataBaseFileName同时存在于Debug | win32和Release | win32的ItemDefinitionGroup中,因此您应该在.vcxproj文件的两个位置中更正该值。