是否可以将VisualStudio 2008配置为始终构建启动项目?

时间:2020-03-05 18:40:36  来源:igfitidea点击:

我有几个项目的解决方案,其中启动项目有一个构建后事件,该事件会执行"插件"项目的所有复制以及其他组织任务。将解决方案从VS 2005升级到VS 2008后,似乎只有在我修改启动项目时才会触发构建后事件,这意味着更新后的插件不会插入当前的调试会话中。这是有道理的,但似乎是行为上的改变。是否有人注意到构建哪些项目的行为发生了变化?

有谁知道在我遇到F5时可以用来强制重新启动启动项目的解决方法?也许我很早以前就将VS 2005配置为以这种方式工作,以至于我忘记了这一切...

解决方案

回答

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

就像是:

devenv project.csproj /clean

回答

为什么不只为每个插件在"启动"项目中添加依赖项?如果其他任何一个更改,这将迫使该项目被重建,而我们将不必担心其他任何构建前/构建后事件。

回答

我认为我们需要重新组织职责。每个组件都应对自己负责,因此将其生成的优点复制到需要的地方。这样,是否/谁/什么/何时/何处构建都无关紧要。任何更新的内容都会放入适当的位置。

IMO的其他建议是不可以的,因为它们会绕过编译器的聪明之处,让他们知道何时需要对主项目进行重建。因此节省了任何编译时间。如果"插件"项目是程序集(而不仅仅是主项目中的项目引用),则无需在每次重建插件时都重新构建主项目。新的程序集将被选择进入流程/调试器,而无需重新构建的主项目。

回答

真痛苦对于Microsoft,我们真正需要的是使我们能够参与"解决方案构建后"事件。我们可以通过宏来执行此操作,但这太复杂了。

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

这是我的解决方案,虽然不优雅,但可以工作:

  • 创建一个新项目,其唯一目的是运行后生成脚本。将其标记为依赖于解决方案中的所有其他项目。
  • 将一个虚拟文件添加到该项目,该文件称为dummy.h或者其他名称。
  • 在解决方案资源管理器中右键单击dummy.h,然后选择"属性"。
  • 选择"自定义构建步骤"。
  • 对于命令行,键入" echo",对于输出,键入" dummy",否则将不再存在。

现在,该项目以及因此的构建后脚本将在每个构建上运行。

约翰。

回答

flipdoubt:它们是最初于2008年创建的项目。我的建议是,如果Cis不起作用,请查看Build Events选项卡并检查" Run the build-build event:"下拉菜单的设置。如果将其设置为"当构建更新项目输出时",则可能是问题,请尝试将其设置为"成功构建时"。

约翰。

回答

我在这里遇到同样的问题,这很烦人。 John Richardson是对的,因为在解决方案中的任何项目正在构建时,都应该存在一个解决方案后构建事件(和解决方案前构建事件)。

我认为在当前的VS 2008 IDE中,没有什么好的解决方法可以得到此结果。

回答

从@lomaxx建议开始,通过在启动项目的后构建事件末尾添加以下行,我得到了非常相似的设置:

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

请注意,这会使启动项目在下次需要调试时生成,因此我们应确保至少一次生成该项目。

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