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

有谁知道我可以在按下 F5 时强制重建启动项目的解决方法吗?也许我很久以前就将 VS 2005 配置为以这种方式工作,以至于我已经忘记了它......

有帮助吗?

解决方案

为什么不直接为每个插件添加对“启动”项目的依赖项呢?如果其他任何更改发生,这将强制重建项目,并且您不必干扰任何其他构建前/构建后事件。

其他提示

我认为你需要重新安排职责。每个组件都应该对自己负责,因此将其生成的优点复制到需要的地方。这样,是否/谁/什么/何时/何地建造并不重要。无论更新什么,都会将其放置在正确的位置。


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

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

就像是:

devenv project.csproj /clean

这是一种痛苦。我们真正需要的是 Microsoft 允许我们参与解决方案后构建事件。您可以通过宏来完成此操作,但这太复杂了。

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

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

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

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

约翰。

翻转怀疑:它们是最初于 2008 年创建的项目。如果 C# 不起作用,我的建议是查看“构建事件”选项卡并检查“运行构建后事件:”下拉列表的设置。如果它设置为“当构建更新项目输出时”,这可能是您的问题,请尝试设置为“成功构建时”。

约翰。

我在这里遇到了同样的问题,这非常烦人。John Richardson 是正确的,因为每当构建解决方案中的任何项目时,都应该应用一个解决方案生成后事件(以及一个解决方案生成前事件)。

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top