Visual studio 2010 未重建可执行文件,但已重新编译对象文件 用Visual Studio 2012构建一个基本的C++项目。当我更改源文件时: 编译相应的对象文件 编译器的.tlog文件已更新 PDB文件已更新 但是,链接器的.tlog文件没有更改 链接器声明所有输出都是最新的。并且不会生成新的可执行文件

Visual studio 2010 未重建可执行文件,但已重新编译对象文件 用Visual Studio 2012构建一个基本的C++项目。当我更改源文件时: 编译相应的对象文件 编译器的.tlog文件已更新 PDB文件已更新 但是,链接器的.tlog文件没有更改 链接器声明所有输出都是最新的。并且不会生成新的可执行文件,visual-studio-2010,visual-studio,visual-studio-2012,Visual Studio 2010,Visual Studio,Visual Studio 2012,获取要生成的可执行文件的唯一方法是删除它。跟踪系统似乎出了问题,我想知道是否有人能解释一下这个问题 以下是我更改两个文件后的msbuild输出,省略了完整路径和其他内容(此输出用于VS2010工具集,但2012的行为相同): 到目前为止,一切顺利。现在链接器开始工作了(好吧,它没有): 在逐个检查属性表中的所有选项之后,这个问题的唯一根源似乎是我们将中间目录设置为另一个驱动器上的目录。我们总是在%TEMP%中进行源代码外构建,而且大多数时候项目都位于另一个驱动器上 提交了一份错误报告,包括重现问

获取要生成的可执行文件的唯一方法是删除它。跟踪系统似乎出了问题,我想知道是否有人能解释一下这个问题

以下是我更改两个文件后的msbuild输出,省略了完整路径和其他内容(此输出用于VS2010工具集,但2012的行为相同):

到目前为止,一切顺利。现在链接器开始工作了(好吧,它没有):


在逐个检查属性表中的所有选项之后,这个问题的唯一根源似乎是我们将中间目录设置为另一个驱动器上的目录。我们总是在%TEMP%中进行源代码外构建,而且大多数时候项目都位于另一个驱动器上

提交了一份错误报告,包括重现问题的简单步骤。希望这个问题很快得到解决。当前的解决方案是将IntDir设置为项目所在驱动器上的direcyory

更新


针对此问题提交的错误报告以“按设计”关闭:似乎中间目录不应为%TEMP%或%TMP%或其任何子目录。令人不安,但至少我现在知道出了什么问题。

有趣的是,我也有同样的问题,但解决方案对我不起作用。您的中间/输出目录设置为什么?$(IntDir)是$(VmRoot)Temp\$(ProjectName)\$(Platform)\$(Configuration)\,其中$(VmRoot)是开发环境的根目录,$(VmRoot)温度不等于%TMP%或%Temp%。我目前正在测试这样一个假设,即该限制也适用于所有名为“Temp”的目录的子目录。很好的一点,可能只是小写(“Temp”)上的字符串匹配。
 1>Target "ClCompile" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets"...
  Using "CL" task from assembly "Microsoft.Build.CppTasks.Win32, Version=4.0.0.0...
  Task "CL"
    Read Tracking Logs:
     cl.read.1.tlog
     CL.2520.read.1.tlog
     ...
    Outputs for ....
     XXX.OBJ
     YYY.OBJ
     ...
    xxx.cpp will be compiled as xxx.cpp was modified...
    yyy.cpp will be compiled as yyy.cpp was modified...
    Write Tracking Logs:
     cl.write.1.tlog
     CL.2520.write.1.tlog
     ...
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe ....
    Tracking command:
    C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\Tracker.exe ....
    xxx.cpp
    yyy.cpp
  Done executing task "CL".
1>Done building target "ClCompile" in project "xxx.vcxproj".
1>Target "Link" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets"....
  Using "Link" task from assembly "Microsoft.Build.CppTasks.Win32, Version=4.0.0.0...
  Task "Link"
    Using cached output dependency table built from:
    link.write.1.tlog
    Using cached input dependency table built from:
     ink.read.1.tlog
    Outputs for ....
     MY.EXE
     MY.PDB
    All outputs are up-to-date.
  Done executing task "Link".
  Task "Message"
    xxx.vcxproj -> my.exe
  Done executing task "Message".
1>Done building target "Link" in project "xxx.vcxproj".