【问题标题】:Can I configure VisualStudio 2008 to always build the startup project?我可以将 VisualStudio 2008 配置为始终构建启动项目吗?
【发布时间】:2010-09-06 03:39:26
【问题描述】:

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

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

【问题讨论】:

    标签: visual-studio


    【解决方案1】:

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


    IMO 其他建议是不可以的,因为它们会绕过编译器的聪明才智,知道何时需要对主项目进行重建。从而杀死任何编译时间节省。如果您的“插件”项目是程序集(而不仅仅是来自主项目的项目引用),那么您无需在每次重新构建插件时都重新构建主项目。新程序集将被选择到进程/调试器中,而没有需要重建的主项目。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        类似:

        devenv project.csproj /clean
        

        【讨论】:

          【解决方案4】:

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

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

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

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

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

          约翰。

          【讨论】:

            【解决方案5】:

            flipdoubt:它们是最初在 2008 年创建的项目。如果 C# 无法正常工作,我的建议是查看“构建事件”选项卡并检查“运行构建后事件:”下拉菜单的设置。如果它设置为“当构建更新项目输出时”,这可能是您的问题,请尝试设置为“成功构建”。

            约翰。

            【讨论】:

              【解决方案6】:

              我在这里遇到了同样的问题,这很烦人。 John Richardson 是正确的,应该有一个 Post-Solution Build 事件(和一个 Pre-Solution Build 事件),无论何时构建解决方案中的任何项目都适用。

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

              【讨论】:

                【解决方案7】:

                从@lomaxx 的建议开始,我通过在启动项目的post-build 事件的end 添加以下行,得到了一个非常相似的设置:

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

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

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2014-03-29
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-11-18
                  • 2021-10-22
                  • 1970-01-01
                  相关资源
                  最近更新 更多