2016-01-12 27 views
1

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.如何解決MSB8029:中級目錄或輸出目錄不能在VS2013

我被檢查的項目和改變輸出目錄中級目錄但我仍然收到了解決方案中每個項目的消息。

我該如何解決這個問題?

回答

1

我找到了答案 - 我錯過了環境變量。添加後重新啓動問題已經消失。

如何修復的Windows 7

  1. 可以肯定的中間和輸出目錄不存在的臨時目錄下!如果問題仍然存在:
  2. 進入環境變量(開始 - >計算機>右鍵單擊 - >屬性 - >高級系統設置 - >選項卡高級 - >環境變量)
  3. 添加到用戶變量變量名稱:TEMP,變量值:%APPDATA%\本地的\ Temp
  4. 添加到用戶變量變量名:TMP,變量值:%APPDATA%\本地的\ Temp
  5. 添加到系統變量變量名:TEMP ,變量值:C:\ WINDOWS \ TEMP
  6. 廣告d至系統變量變量名:TMP,變量值:C:\ WINDOWS \ TEMP
  7. 重啓
0

這是一個真正無用的信息預警。我認爲將所有中間文件導入臨時文件夾是一個很好的主意。至少在涉及到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.propsMicrosoft.Cpp.Win32.user.props
  2. 添加宏IgnoreWarnIntDirInTempDetected與價值true

完成

該解決方案適用於VS2013和VS2015爲好。

%LOCALAPPDATA%\Microsoft\MSBuild\v4.0 
:個人屬性文件將被發現