【问题标题】:In Visual Studio, how do I debug a project without building it在 Visual Studio 中,如何在不构建项目的情况下调试项目
【发布时间】:2011-11-17 23:15:39
【问题描述】:

这是针对 Visual Studio 2008 的。

我将Tools|Projects and Solutions|Build and Run|On Run, when projects are out of date 设置为Always build,因为这是我通常想要的。但是,有时(当我在版本控制中检查历史版本时)我想跳过构建过程。是否有一个神奇的按键可以覆盖一个调试会话的构建步骤,这样我就不必更改设置并将其改回来?

【问题讨论】:

    标签: visual-studio visual-studio-2008


    【解决方案1】:

    请右键单击解决方案名称并转到Properties -> Configuration Properties -> Configuration,清除项目的构建复选框。

    【讨论】:

    • 我会接受这个答案,尽管我不再需要这样做。 (我问这个问题已经有几年了;-)。)这些步骤看起来很合理,而且比通过Tools|... 搜索要短,尽管您必须记住再次打开构建。
    • 对远程调试非常有用的建议。您可以手动构建解决方案,然后将 Debug 文件夹复制到远程计算机。这比附加远程进程更方便。
    【解决方案2】:

    在 VS2013 中是:右键单击 solution -> Configuration Manager,然后清除项目的 Build 复选框。

    【讨论】:

      【解决方案3】:

      我发现为此创建一个新的构建配置很方便。 在解决方案资源管理器中右键单击解决方案并选择Properties。从那里选择Configuration Properties / Configuration。现在选择Configuration Manager 并创建一个新配置,如图所示。您可以将构建配置创建为 Debug 项目的副本:

      然后,按OK 并关闭所有项目构建标志:

      Visual Studio 将在启动项目的bin 文件夹下创建一个文件夹,其名称为新配置。将您的预构建文件复制到那里并运行新配置。

      【讨论】:

        【解决方案4】:

        我将以下函数放入我的NuGet_profile.ps1

        function debugnobuild() {
            # temporarily disable build (same as Properties -> Configuration -> ..)
            $buildProjects = @($DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts |
            where ShouldBuild | foreach {
                $_.ShouldBuild = $false
                $_.ProjectName
            })
            try {
                # start debugging
                $DTE.Solution.SolutionBuild.Debug()
            }
            finally {
                # undo changes
                $DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts |
                where { $buildProjects -contains $_.ProjectName } | foreach {
                    $_.ShouldBuild = $true
                }
            }
        }
        

        然后只需在包管理器控制台中调用debugnobuild(或您喜欢的任何名称)。

        【讨论】:

          【解决方案5】:

          我的做法是:在代码中设置System.Diagnostics.Debugger.Launch()行,单独运行程序,在VS中附加调试器。

          【讨论】:

          • 我不认为这对我有用。关键是我有一个二进制文件,我不想重新编译它。
          【解决方案6】:

          不,没有。您无法在不运行历史版本的情况下对其进行调试,这意味着构建它。 VS 对当前符号和二进制文件进行调试,如果不构建它,它将与源不同步,从而无法进行调试。

          【讨论】:

          • 我不想打开另一个蠕虫罐,但我检查了编译后的可执行文件和 .pdb 文件(在标签中,所以它不在任何分支中)。所以,我确实拥有我需要的一切——我希望 Visual Studio 不会把它吹走。
          • 单独启动程序,在VS中打开旧代码库并手动附加调试器。
          • 我想调试初始化,所以我需要尽早设置断点。
          • 只用 VS 和代码库制作一个虚拟机。将相关代码签出到新文件夹并进行调试。如果你不想污染你当前的构建,你将不得不做一些更多的工作,你将无法绕过它。
          猜你喜欢
          • 1970-01-01
          • 2011-01-28
          • 1970-01-01
          • 1970-01-01
          • 2014-02-20
          • 1970-01-01
          • 1970-01-01
          • 2015-09-26
          • 2016-02-06
          相关资源
          最近更新 更多