此行在 .vcxproj 文件中出现两次:
<Import Project="$(SolutionDir)\$(SolutionName).props" />
在 VS2019 中加载解决方案时似乎导致此 QT 错误:
ProjectName .vcxproj:后台构建错误:未找到导入的项目“C:\Users\...\ProjectFolder\.props”。确认导入声明“C:\Users\...\ProjectFolder\.props”中的表达式正确,并且该文件存在于磁盘上。C:\Users\...\ProjectFolder\ProjectName.vcxproj
第一个问题:我注意到错误在第二个目录上有两个反斜杠。我阅读了$(ProjectDir)
返回尾随反斜杠的 Microsoft Docs,因此我删除了导入声明中的那个,它只留下一个反斜杠。
主要问题:删除反斜杠后,宏似乎$(SolutionName)
返回一个空/空字符串,导致 QT 尝试加载“.props”。有趣的是,如果您在宏的左侧或右侧(在导入声明中)键入 ANY 文本,它会按预期返回适当的解决方案名称,但附加文本会弄乱路径。删除该文本并重新加载 VS,它会返回一个空字符串。例如:
$(SolutionDir)$(SolutionName)asdf.props
导致“C:\Users\...\ProjectFolder\ProjectNameasdf.props 未找到”
和
$(SolutionDir)asdf$(SolutionName).props
导致“C:\Users\...\ProjectFolder\asdfProjectName.props 未找到”
但
$(SolutionDir)$(SolutionName).props
导致“C:\Users\...\ProjectFolder\.props 未找到”
在“属性页”>“可执行目录”>“宏”窗口中,所有内容都按应有的方式定义。我已经没有想法了
我试过的:
- 使用
$(ProjectDir)\$(ProjectName)
(同样的错误) - 使用
$(MSBuildProjectDirectory)\$(SolutionName)
(同样的错误) - 使用
..\..\
将其指向道具文件(同样的错误) - 添加
Condition="Exists('$(SolutionDir)\$(SolutionName).props')"
到导入标签中(将错误更改为“ ProjectName .vcxproj background build FAILED!”) - 完全删除进口申报
- 阅读并尝试所有现有的 StackOverflow 帖子,甚至是远程相关的
其他信息:
- 项目从VS 2017转移到2019
- 该项目涉及嵌套在一个父解决方案中的多个解决方案
- 父解决方案下的每个解决方案都会引发两次此错误,我相信每个涉及的 Import Declaration 都会发生一次
$(SolutionDir)$(SolutionName)
- 如前所述,该项目涉及 QT
- 每个子解决方案都指向一个父解决方案的 .props 文件
- 项目在这些错误之后继续,并且正常运行,没有进一步的错误。但是我担心它可能会在以后引起问题,并且为了完整起见想要清除它。