Visual Studio 抱怨每次编译
warning MSB8029: The Intermediate directory or Output directory cannot reside under the Temporary directory as it could lead to issues with incremental build.
我正在检查项目并更改了输出目录和中间目录,但我仍然收到解决方案中每个项目的消息。
我该如何解决这个问题?
我找到了答案 - 我缺少环境变量。添加它们并重新启动后,问题就消失了。
如何修复 Windows 7
这是一个真正无用的信息警告。我认为将所有中间文件定向到临时文件夹是一个好主意。至少在 C++ 方面是这样。
该警告是由于 VS2017 中的设置造成的
Microsoft.CppBuild.targets
(395):
<VCMessage Code="MSB8029" Type="Warning" Condition="'$(DesignTimeBuild)'!='true' and '$(IgnoreWarnIntDirInTempDetected)' != 'true' and ('$(_IntDirFullpath.StartsWith($(Tmp), true, null))' == 'true' or '$(_IntDirFullpath.StartsWith($(Temp), true, null))' == 'true' or '$(_OutDirFullpath.StartsWith($(Tmp), true, null))' == 'true' or '$(_OutDirFullpath.StartsWith($(Temp), true, null))' == 'true')"/>
VS版本之间的实现有点不同,但解决方案是相同的。您所需要做的就是通过分配宏来禁用触发器。
Microsoft.Cpp.x64.user.props
以及
Microsoft.Cpp.Win32.user.props
IgnoreWarnIntDirInTempDetected
的宏
true
完成
该解决方案对 VS2013 和 VS2015 也有效。个人财产文件可在以下位置找到:
%LOCALAPPDATA%\Microsoft\MSBuild\v4.0
对于那些使用 VS 2019(也可能是后者)遇到此问题的人。
(与TEMP环境变量无关)。
VS 2019 不支持用户设置,您应该使用项目设置来禁用警告。
知道 MSBuild 也会评估环境中的属性,您可以定义与 MSBuild 属性同名的环境变量。在您想要禁用警告的会话中创建以下属性
set IgnoreWarnIntDirInTempDetected=true
通过创建值为
IgnoreWarnIntDirInTempDetected
的用户环境变量 true
,可以轻松抑制此警告。