我有一个包含多个项目的解决方案,其中启动项目有一个后期构建事件,可以完成所有“插件”项目和其他组织任务的复制。将解决方案从VS 2005升级到VS 2008后,似乎只有在我修改启动项目时才会触发构建后事件,这意味着我更新的插件不会插入到当前的调试会话中。这是有道理的,但似乎是行为的改变。是否有其他人注意到关于哪些项目建立的行为改变?
有没有人知道每当我点击F5时我可以用来强制启动项目重建的解决方法?也许我很久以前就把VS 2005配置成这样的方式让我忘记了所有这些......
答案 0 :(得分:5)
我认为你需要重新组织责任。每个组件都应该对自己负责,因此将其生成的优点复制到需要的位置。这样,无论是/ who / what / when / where构建起来都没关系。无论更新什么,都会将自己置于适当的位置。
IMO其他建议是不可能的,因为它们会绕过编译器的智能,以了解主项目何时需要重建。因此可以节省任何编译时间。如果您的“插件”项目是程序集(而不仅仅是主项目的项目引用),那么每次重建插件时都不需要重建主项目。新程序集将被选择到需要重建的主项目的进程/调试器中。
答案 1 :(得分:3)
为什么不在每个插件的“启动”项目中添加依赖项?如果任何其他项目发生变化,这将强制重建项目,并且您不必混淆任何其他前/后构建事件。
答案 2 :(得分:2)
我不知道这是否是正确的方法,但您可以在启动项目中添加预建事件(如果它是静态的)来清理将强制重建的项目。
类似的东西:
devenv project.csproj /clean
答案 3 :(得分:2)
这是一种痛苦。我们真正需要的是让微软允许我们加入Post-Solution Build事件。你可以通过宏来做到这一点,但这太复杂了。
我假设这是一个C ++项目,因为我没有C#的这个问题。
这是我的解决方案,它并不优雅,但它有效:
此项目以及后期构建脚本现在将在每次构建时运行。
约翰。
答案 4 :(得分:1)
flipdoubt:它们是最初在2008年创建的项目。我的建议是,如果它不能正常工作C#,请查看Build Events选项卡并检查“Run the post-build event:”下拉列表的设置。如果将其设置为“当构建更新项目输出时”,这可能是您的问题,请尝试设置为“成功构建”。
约翰。
答案 5 :(得分:1)
我在这里遇到同样的问题而且非常讨厌。 John Richardson是正确的,因为应该有一个Post-Solution Build事件(和一个Pre-Solution Build事件),只要构建解决方案中的任何项目,它就适用。
我认为在当前的VS 2008 IDE中没有任何好的解决方法可以获得这个结果。
答案 6 :(得分:0)
从@lomaxx建议开始,我通过在启动项目的 post-build 事件的 end 处添加以下行来获得非常类似的设置:< / p>
"$(DevEnvDir)devenv.exe" "$(ProjectPath)" /clean
请注意,这会使启动项目构建您需要调试的 next 时间,因此您应该确保项目至少构建一次。
PS。我最初尝试按照建议进行预构建,但这不起作用(我认为这是有道理的 - 如果VS认为项目不需要构建,它将不会为该项目执行任何事件。)