2008-08-19 34 views
2

我有几个项目的解决方案,其中启动项目具有生成后事件,可以完成“插件”项目和其他组织任务的所有复制。将解决方案从VS 2005升级到VS 2008后,似乎只有在修改启动项目时才会触发生成后事件,这意味着我的更新插件不会插入当前调试会话。这是有道理的,但它看起来像行为的变化。其他人是否注意到哪些项目的建设行为发生了变化?我可以配置VisualStudio 2008以始终构建启动项目吗?

有没有人知道我可以用来强制启动项目重建每当我打F5的解决方法?也许我配置VS 2005在很久以前就以这种方式工作,以至于我忘记了所有关于它的事情......

回答

3

为什么不只是添加一个依赖到“启动”项目中为每个插件?这将迫使项目在任何其他项目发生变化时进行重建,并且不必混淆其他任何预先/后期构建事件。

2

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

类似:

devenv project.csproj /clean 
5

我认为你需要重新组织责任。每个组件都应该对自己负责,因此可以将其生成的好处复制到需要的地方。这样,无论谁/什么/何时/何地建成,都无关紧要。无论什么更新将把自己放到适当的地方。


IMO其他建议是无号,因为他们会绕过编译器的智慧,知道什么时候重建的主要项目是必要的。因此可以节省任何编译时间。如果您的“插件”项目是程序集(而不仅仅是来自主项目的项目引用),则每次插件重建时都不需要重新构建主项目。新的程序集将被选入进程/调试程序而不需要重建的主项目。

2

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

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

这是我的解决方案,它不是优雅,但它的工作原理:

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

这个项目,因此后生成脚本,现在将运行在每个构建。

John。

1

flipdoubt:它们是2008年创建的项目。我的建议是,如果它不工作C#是查看Build Events选项卡并检查“Run the post-build event:”下拉菜单的设置。如果它被设置为'当构建更新项目输出',这可能是你的问题,尝试设置'在成功构建'。

John。

1

我在这里有同样的问题,这是非常恼人的。 John Richardson说得对,应该有一个Post-Solution Build事件(和一个Pre-Solution Build事件),只要解决方案中的任何项目正在构建,就会生效。

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

0

从@lomaxx建议开始,我有一个非常类似的设置中加入下面一行在结束工作后建立活动的启动项目:

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

注意,这使启动项目建立下一个时间你需要调试,所以你应该确保该项目建设至少一次。

PS。我最初尝试按照建议进行预生成,但这并不奏效(我认为这很有道理 - 如果VS认为项目不需要构建,则不会执行该项目的任何事件)。

相关问题