Msbuild 自2019年以来,最新检查声明缺少生成输出

Msbuild 自2019年以来,最新检查声明缺少生成输出,msbuild,visual-studio-2019,Msbuild,Visual Studio 2019,因为我使用的是Visual Studio 2019,所以每次我更新时都会重建一些旧项目,即使没有任何更改。生成输出声明如下: 最新检查:项目:…\MyProject.vcxproj,配置:调试Win32 项目不是最新的:缺少生成输出“d:\mysolution\myproject\debug\” 提到的输出目录确实存在,但大小写为(D:\MySolution\MyProject\Debug) 在Visual Studio 2017中生成同一项目时,MSBuild会正确检测何时没有任何更改: 最新

因为我使用的是Visual Studio 2019,所以每次我更新时都会重建一些旧项目,即使没有任何更改。生成输出声明如下:

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

项目不是最新的:缺少生成输出“d:\mysolution\myproject\debug\”

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

在Visual Studio 2017中生成同一项目时,MSBuild会正确检测何时没有任何更改:

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

所有输出都是最新的

有问题的项目是管理C++项目,配置平台工具集是“VisualStudio 2013(V12)”。

< P> <强>尝试:

  • 清洁溶液,关闭溶液并关闭VS
  • 删除.suo文件(或.vs文件夹)以及bin和obj文件夹
  • 打开VS2019,重新引用DLL,更改.xxproj文件中的引用路径
  • 看这个

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

    更新:

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

    请检查以下内容:

    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
        <ClCompile>
          ...
          <ProgramDataBaseFileName>$(Configuration)\</ProgramDataBaseFileName>
      <!--<ProgramDataBaseFileName>$(Configuration)\$(TargetName).pdb</ProgramDataBaseFileName>-->
          <CompileAsManaged>true</CompileAsManaged>
          <PrecompiledHeaderFile />
        </ClCompile>
    
    
    ...
    $(配置)\
    真的
    
    ProgramDataBaseFileName的值为
    $(配置)\
    ,即
    debug\
    。因此,构建过程认为存在一个名为
    debug\
    的构建输出文件,但它实际上并不存在。那么最新的检查就不能正常工作了

    以下是解决方法:

    因此,您可以对该语句进行注释,或者为其提供正确的值,如
    $(配置)\$(TargetName).pdb
    ,而不是
    $(配置)\
    ,后者是一个路径而不是一个文件

    $(配置)\$(目标名称)。pdb
    可以解决此问题

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

    请尝试:

  • 清洁溶液,关闭溶液并关闭VS
  • 删除.suo文件(或.vs文件夹)以及bin和obj文件夹
  • 打开VS2019,重新引用DLL,更改.xxproj文件中的引用路径
  • 看这个

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

    更新:

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

    请检查以下内容:

    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
        <ClCompile>
          ...
          <ProgramDataBaseFileName>$(Configuration)\</ProgramDataBaseFileName>
      <!--<ProgramDataBaseFileName>$(Configuration)\$(TargetName).pdb</ProgramDataBaseFileName>-->
          <CompileAsManaged>true</CompileAsManaged>
          <PrecompiledHeaderFile />
        </ClCompile>
    
    
    ...
    $(配置)\
    真的
    
    ProgramDataBaseFileName的值为
    $(配置)\
    ,即
    debug\
    。因此,构建过程认为存在一个名为
    debug\
    的构建输出文件,但它实际上并不存在。那么最新的检查就不能正常工作了

    以下是解决方法:

    因此,您可以对该语句进行注释,或者为其提供正确的值,如
    $(配置)\$(TargetName).pdb
    ,而不是
    $(配置)\
    ,后者是一个路径而不是一个文件

    $(配置)\$(目标名称)。pdb
    可以解决此问题


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

    很抱歉,现在我无法重现相同的问题。你能分享一个有相同问题的样本,这样我就可以直接复制和检查吗?对不起,我现在不能复制相同的问题。你能分享一个有同样问题的样本吗?我可以直接复制和检查它吗?尝试了1和2并检查了输出目录(它的“$(配置)\”)。我正在测试的项目没有引用(除了mscorlib.dll)。如果项目没有额外的引用,“重新引用DLL,更改.xxproj文件中的引用路径”是什么意思。在尝试1和2后,结果如何?相同的问题仍然存在?如果是这样,你能分享一个简单的样本来帮助复制它吗。(我的意思是你可以复制一个有这个问题的项目,并删除其中的核心代码,我们不需要个人代码)问题在1和2之后仍然存在。关于样品,我如何与您联系?Stackoverflow不允许我放置指向文件共享的链接。您可以通过一个驱动器或github共享它。我认为单驱动链接和github链接是被批准的。(别忘了删除个人核心代码)@user2900970我已经转载了这个问题。我正试图找出原因并检查是否存在解决办法。另外,我将下载VS2013来检查所有托管的C++项目是否会在VS2019中引起这个问题。我将在这里分享任何更新。谢谢你的项目来帮助我复制它!尝试1和2并检查输出目录(其“$(配置)\”)。我正在测试的项目没有引用(除了mscorlib.dll)。如果项目没有额外的引用,“重新引用DLL,更改.xxproj文件中的引用路径”是什么意思。在尝试1和2后,结果如何?相同的问题仍然存在?如果是这样,你能分享一个简单的样本来帮助复制它吗。(我的意思是你可以复制一个有这个问题的项目,并删除其中的核心代码,我们不需要个人代码)问题在1和2之后仍然存在。关于样品,我如何与您联系?Stackoverflow不允许我放置指向文件共享的链接。您可以通过一个驱动器或github共享它。我认为单驱动链接和github链接是被批准的。(别忘了删除个人核心代码)@user2900970我已经转载了这个问题。