【发布时间】:2011-01-09 13:07:03
【问题描述】:
我编写了一个 VS 插件,它拦截 Visual Studio 的构建命令并使用另一个构建系统进行构建。我的构建以正确的格式显示错误,以便您可以在 VS 中单击它们,但要实现完全无缝集成,剩下的一步是防止 VS 的“运行”或“调试”命令抱怨它不认为项目已建成(当然是在)有谁知道我如何欺骗 VS 认为项目已建成?
【问题讨论】:
标签: visual-studio visual-studio-2008
我编写了一个 VS 插件,它拦截 Visual Studio 的构建命令并使用另一个构建系统进行构建。我的构建以正确的格式显示错误,以便您可以在 VS 中单击它们,但要实现完全无缝集成,剩下的一步是防止 VS 的“运行”或“调试”命令抱怨它不认为项目已建成(当然是在)有谁知道我如何欺骗 VS 认为项目已建成?
【问题讨论】:
标签: visual-studio visual-studio-2008
简而言之,MSBuild / Visual Studio 会检查特定项目配置中已定义目标的输出。接下来,它将指定为目标输出的文件的时间戳与指定为该特定目标的输入的所有文件的时间戳进行比较。如果输入比输出更新,则请求重新生成输出(重新编译源代码或重新链接目标文件等)
如何让 VS 认为项目已构建?
更新输入文件的时间戳,即源文件(.cpp、.cs)或二进制文件(如 .obj),用作链接器和您感兴趣的其他文件的输入。
有时我会使用 GnuWIn32 中的 touch 实用程序手动发出以下命令
touch myfile.obj
【讨论】:
Visual Studio 使用源文件的日期/时间戳。如果源文件比bin\debug 或bin\release 中的编译二进制文件更新,Visual Studio 将重建解决方案。
有时,重建过程可能会失败,快速的解决方案是删除解决方案的bin\debug 或bin\release 文件夹中的中间调试文件*.pdb。然后在解决方案上发布构建。
希望这会有所帮助, 最好的祝福, 汤姆。
【讨论】: