如何修复MSB8029:中间目录或输出目录不能驻留在VS2013中的临时目录下

问题描述 投票:0回答:4

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.

我正在检查项目并更改了输出目录中间目录,但我仍然收到解决方案中每个项目的消息。

我该如何解决这个问题?

visual-studio-2013
4个回答
5
投票

我找到了答案 - 我缺少环境变量。添加它们并重新启动后,问题就消失了。

如何修复 Windows 7

  1. 确保中间目录和输出目录不位于临时目录下!如果问题仍然存在:
  2. 转到环境变量(开始->计算机->右键单击->属性->高级系统设置->选项卡高级->环境变量)
  3. 添加到用户变量 变量名称:TEMP,变量值:%APPDATA%\Local\Temp
  4. 添加到用户变量 变量名称:TMP,变量值:%APPDATA%\Local\Temp
  5. 添加到系统变量 变量名称:TEMP,变量值:C:\Windows\Temp
  6. 添加到系统变量 变量名称:TMP,变量值:C:\Windows\Temp
  7. 重启

1
投票

这是一个真正无用的信息警告。我认为将所有中间文件定向到临时文件夹是一个好主意。至少在 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版本之间的实现有点不同,但解决方案是相同的。您所需要做的就是通过分配宏来禁用触发器。

  1. 打开或创建您的个人属性文件
    Microsoft.Cpp.x64.user.props
    以及
    Microsoft.Cpp.Win32.user.props
  2. 添加带有值
    IgnoreWarnIntDirInTempDetected
     的宏 
    true

完成

该解决方案对 VS2013 和 VS2015 也有效。个人财产文件可在以下位置找到:

%LOCALAPPDATA%\Microsoft\MSBuild\v4.0

0
投票

对于那些使用 VS 2019(也可能是后者)遇到此问题的人。 (与TEMP环境变量无关)。
VS 2019 不支持用户设置,您应该使用项目设置来禁用警告。 知道 MSBuild 也会评估环境中的属性,您可以定义与 MSBuild 属性同名的环境变量。在您想要禁用警告的会话中创建以下属性

set IgnoreWarnIntDirInTempDetected=true

并开始构建。


0
投票

通过创建值为

IgnoreWarnIntDirInTempDetected
的用户环境变量
true
,可以轻松抑制此警告。

© www.soinside.com 2019 - 2024. All rights reserved.