我可以将Visual Studio 2008配置为始终构建启动项目吗?

时间:2008-08-19 04:13:08

标签: visual-studio

我有一个包含多个项目的解决方案,其中启动项目有一个后期构建事件,可以完成所有“插件”项目和其他组织任务的复制。将解决方案从VS 2005升级到VS 2008后,似乎只有在我修改启动项目时才会触发构建后事件,这意味着我更新的插件不会插入到当前的调试会话中。这是有道理的,但似乎是行为的改变。是否有其他人注意到关于哪些项目建立的行为改变?

有没有人知道每当我点击F5时我可以用来强制启动项目重建的解决方法?也许我很久以前就把VS 2005配置成这样的方式让我忘记了所有这些......

7 个答案:

答案 0 :(得分:5)

我认为你需要重新组织责任。每个组件都应该对自己负责,因此将其生成的优点复制到需要的位置。这样,无论是/ who / what / when / where构建起来都没关系。无论更新什么,都会将自己置于适当的位置。


IMO其他建议是不可能的,因为它们会绕过编译器的智能,以了解主项目何时需要重建。因此可以节省任何编译时间。如果您的“插件”项目是程序集(而不仅仅是主项目的项目引用),那么每次重建插件时都不需要重建主项目。新程序集将被选择到需要重建的主项目的进程/调试器中。

答案 1 :(得分:3)

为什么不在每个插件的“启动”项目中添加依赖项?如果任何其他项目发生变化,这将强制重建项目,并且您不必混淆任何其他前/后构建事件。

答案 2 :(得分:2)

我不知道这是否是正确的方法,但您可以在启动项目中添加预建事件(如果它是静态的)来清理将强制重建的项目。

类似的东西:

devenv project.csproj /clean

答案 3 :(得分:2)

这是一种痛苦。我们真正需要的是让微软允许我们加入Post-Solution Build事件。你可以通过宏来做到这一点,但这太复杂了。

我假设这是一个C ++项目,因为我没有C#的这个问题。

这是我的解决方案,它并不优雅,但它有效:

  • 创建一个新项目,其唯一目的是运行构建后脚本。将其标记为依赖于解决方案中的每个其他项目。
  • 将虚拟文件添加到名为dummy.h或其他任何内容的项目中。
  • 在解决方案资源管理器中右键单击dummy.h,然后选择“属性”。
  • 选择“自定义构建步骤”。
  • 对于命令行类型'echo'和输出,只需键入'dummy'或其他永远不会存在的内容。

此项目以及后期构建脚本现在将在每次构建时运行。

约翰。

答案 4 :(得分:1)

我在这里遇到同样的问题而且非常讨厌。 John Richardson是正确的,因为应该有一个Post-Solution Build事件(和一个Pre-Solution Build事件),只要构建解决方案中的任何项目,它就适用。

我认为在当前的VS 2008 IDE中没有任何好的解决方法可以获得这个结果。

答案 5 :(得分:1)

flipdoubt:它们是最初在2008年创建的项目。我的建议是,如果它不能正常工作C#,请查看Build Events选项卡并检查“Run the post-build event:”下拉列表的设置。如果将其设置为“当构建更新项目输出时”,这可能是您的问题,请尝试设置为“成功构建”。

约翰。

答案 6 :(得分:0)

从@lomaxx建议开始,我通过在启动项目的 post-build 事件的 end 处添加以下行来获得非常类似的设置:< / p>

"$(DevEnvDir)devenv.exe" "$(ProjectPath)" /clean

请注意,这会使启动项目构建您需要调试的 next 时间,因此您应该确保项目至少构建一次。

PS。我最初尝试按照建议进行预构建,但这不起作用(我认为这是有道理的 - 如果VS认为项目不需要构建,它将不会为该项目执行任何事件。)