Msbuild 自2019年以来,最新检查声明缺少生成输出
因为我使用的是Visual Studio 2019,所以每次我更新时都会重建一些旧项目,即使没有任何更改。生成输出声明如下: 最新检查:项目:…\MyProject.vcxproj,配置:调试Win32 项目不是最新的:缺少生成输出“d:\mysolution\myproject\debug\” 提到的输出目录确实存在,但大小写为(D:\MySolution\MyProject\Debug) 在Visual Studio 2017中生成同一项目时,MSBuild会正确检测何时没有任何更改: 最新检查:项目:MyProject,配置:调试Win32 所有输出都是最新的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会正确检测何时没有任何更改: 最新
有问题的项目是管理C++项目,配置平台工具集是“VisualStudio 2013(V12)”。
< P> <强>尝试:<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文件中两处的值。请尝试:
<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我已经转载了这个问题。