有没有办法找出每次在VS 2008中发布构建选择操作时重建项目的原因?
我甚至试图从构建\配置管理器中删除所有依赖项(取消选中所有程序集的构建列,但有问题的那个)。
我得到了相同的结果:每次重建装配。
我必须提到所有依赖项都构建在同一目录中(有一个共同的输出目录)。
实际上我不太清楚什么是VS / MSBuild算法来决定是否应该重建项目。它是否检查是否存在最后访问NTFS时间戳比相关程序集上的时间戳更新的依赖项(文件/程序集)?也许我可以尝试以这种方式搜索“冒犯”文件。
答案 0 :(得分:3)
您是否定义了更新某些输入文件的Prebuild操作?此外,总是触发的自定义构建步骤可能就是原因。
您有哪种项目类型?
答案 1 :(得分:1)
您的应用程序中的不同模块/项目之间是否存在循环依赖关系?
答案 2 :(得分:1)
如果您正在使用更新的AssemblyFileVersion(就像我使用Cruise Control .Net)修改AssemblyInfo.cs,例如我发现它强制重建。
答案 3 :(得分:1)
这可能是由MSVC 2008错误处理(最近添加的)预构建规则引起的。做一个干净,关闭的MSVC,删除.pch和.ncb文件,重新打开MSVC并构建。这应该修复不必要的编译。
答案 4 :(得分:0)
我不是百分百肯定,但是看起来任何警告的项目都会被重建。
答案 5 :(得分:0)
我没有找到问题的根本原因,但已找到摆脱效果的方法:
GetLatestVersion (使用“覆盖现有”选项)。
现在一切都好。
在我用Workspace版本覆盖本地项目文件之后,我发现了另外一件事:工具 - 选项 - 项目和解决方案 - 构建和运行-MSBuild项目构建输出详细程度中有一个选项强>
默认情况下,此选项设置为最小。如果在详细或诊断上设置,则会在编译项目时在输出窗口中记录许多有趣的消息。它可能给了我关于每次编译项目的原因的指示。