如何在Visual Studio中无需调试即可启动单个项目?

时间:2009-08-31 09:06:03

标签: visual-studio

我的解决方案包含多个可以启动的项目。有时我想在不使用我的解决方案启动项目设置的情况下启动单个项目。当我右键单击项目时,我可以导航到Debug-> Start New Instance,它使用调试器启动应用程序。

但我想在没有调试器的情况下启动一个新实例。这可能吗?

14 个答案:

答案 0 :(得分:17)

如果您对永久解决方案感兴趣,那么我已为此任务编写了一个小宏。 它做了以下事情:

  1. 获取当前选定的项目(如果您选择了多个项目,它将使用第一个选定的项目。)
  2. 保存当前的启动项目
  3. 将当前所选项目设置为“启动项目”,并在“无需调试启动”模式下运行当前所选项目。
  4. 将初始启动项目还原为启动项目。
  5. 以下是我编写的宏以及如何执行此操作的步骤。

    如何编写宏: 首先,您需要转到Visual Studio工具 - >宏 - >宏浏览器。右键单击MyMacros并创建一个新模块(我称之为CollapseAll)。

    现在编辑新模块(双击它)擦除其中的所有内容并将其粘贴到其中。

    Sub RunSelectedWithoutDebug()
                Dim Projs As Array
                Dim Proj As Project
                Projs = DTE.ActiveSolutionProjects()
                If (Projs.Length > 0) Then
                    Proj = Projs.GetValue(0)
                    Dim Prop As EnvDTE.Property
                    Prop = DTE.Solution.Properties.Item("StartupProject")
                    Dim PrevStartup As Object
                    PrevStartup = Prop.Value
                    Prop.Value = Proj.Name
                    DTE.ExecuteCommand("Debug.StartWithoutDebugging")
                    Prop.Value = PrevStartup
                End If
            End Sub
    

    如何将宏绑定到键盘快捷键: 为此,您需要转到工具 - >选项 - >环境 - >键盘。从listBox中选择带有所有默认VS东西的宏(记住它会像MyMacros.Module1.RunSelectedWithoutDebug那样),然后为它分配一个热键组合或和弦并保存。

    注意:第四步是创建一个问题,并产生一个烦人的消息框说: 必须停止构建才能更改解决方案属性。停止构建?好或取消。我以前常常打Ok。如果宏没有任何问题,如果宏将当前选定的项目设置为启动项目,请注释宏的最后一行 Prop.Value = PrevStartup,将'放在行的开头。现在消息框不会出现。

    我正在调查它并且一旦我解决它就会发布更新的宏(如果我可以:))

答案 1 :(得分:15)

VSCommands扩展名添加到Visual Studio中,右键单击项目 - >调试 - >无需调试即可启动

答案 2 :(得分:14)

也许这是VS 2015中的新功能,但无需添加自定义宏 - 您可以在可添加的内容列表中找到“启动无调试”菜单项。

转到工具 - >自定义,请按照下面的图像。

Hit Add Command Here you can find the menu item

答案 3 :(得分:8)

我把这个宏放在一起..这是我在互联网周围发现的几个片段的组合。如果项目配置为运行默认项目输出,它将查找并运行该项目。如果它被配置为运行特定程序,它将运行该程序。此宏也不会编译您的应用程序,因此您需要确保在运行宏之前编译它。同时,这个宏不会受到上面Mahin宏观中提到的问题的影响。

Sub RunActiveProjectOutput()
    Dim Projs As Array
    Dim Proj As Project
    Projs = DTE.ActiveSolutionProjects()
    If (Projs.Length > 0) Then
        Proj = Projs.GetValue(0)

        Dim action = DirectCast(Proj.ConfigurationManager.ActiveConfiguration.Properties.Item("StartAction").Value, Integer)

        If (action = 1) Then
            Dim app = Proj.ConfigurationManager.ActiveConfiguration.Properties.Item("StartProgram").Value
            Dim args = Proj.ConfigurationManager.ActiveConfiguration.Properties.Item("StartArguments").Value
            System.Diagnostics.Process.Start(app, args)
        Else
            Dim fullPath = Proj.Properties.Item("FullPath").Value.ToString()
            Dim outputPath = Proj.ConfigurationManager.ActiveConfiguration.Properties.Item("OutputPath").Value.ToString()
            Dim outputDir = System.IO.Path.Combine(fullPath, outputPath)
            Dim outputFileName = Proj.Properties.Item("OutputFileName").Value.ToString()
            Dim assemblyPath = System.IO.Path.Combine(outputDir, outputFileName)
            System.Diagnostics.Process.Start(assemblyPath)
        End If
    End If
End Sub

答案 4 :(得分:4)

以下是解决与Mahin宏相关的问题的方法

问题描述:第四步是创建一个问题并产生一个烦人的消息框说:必须停止构建才能更改解决方案属性。停止构建?好或取消。

Public Module Custom
    Private WithEvents t As Timers.Timer

    Private Prop As EnvDTE.Property
    Private PrevStartup As Object

    Private Sub StartTimer()
        t = New Timers.Timer
        t.Interval = 0.05
        t.Start()
    End Sub

    Sub t_Elapsed(ByVal ee As Object, ByVal dd As Timers.ElapsedEventArgs) Handles t.Elapsed
        If DTE.Solution.SolutionBuild.BuildState <> vsBuildState.vsBuildStateInProgress Then
            t.Stop()
            Prop.Value = PrevStartup
        End If
    End Sub

    Sub RunSelectedWithoutDebug()
        Dim Projs As Array
        Dim Proj As Project
        Projs = DTE.ActiveSolutionProjects()
        If (Projs.Length > 0) Then
            Proj = Projs.GetValue(0)
            Prop = DTE.Solution.Properties.Item("StartupProject")

            PrevStartup = Prop.Value
            Prop.Value = Proj.Name
            DTE.ExecuteCommand("Debug.StartWithoutDebugging")
            StartTimer()
        End If
    End Sub
End Module

享受!

答案 5 :(得分:3)

我一直在尝试做同样的事情。看起来VS团队的疏忽是你可以在解决方案级别启动或不启动调试,但只能在项目级别进行调试。

我注意到的一件事是,如果右键单击工具栏并选择“自定义”,则在操作的弹出窗口中,转到“项目”类别。在那里,有一个“运行”和“运行选定”的命令。有趣的是,我将其添加到我的项目上下文菜单和主按钮栏中,并且项目似乎始终被禁用。

同样有趣的是,项目上下文菜单的“Debug | Start New Instance”命令无法在可自定义命令列表中找到。我查看了几乎所有类别,但找不到它。

希望有人想出一个很好的方法来做到这一点......这会非常方便!

答案 6 :(得分:2)

在“调试”菜单下使用启动而不调试,或

控制 + F5

或者您可以修改项目的web.config文件:

<compilation debug="false"/>

答案 7 :(得分:2)

右键单击项目并将其设置为启动项目。

按Ctrl + F5

答案 8 :(得分:2)

简而言之。

您可以做的是将一个键绑定到“设置为启动项目”,然后绑定另一个键以启动而无需调试。然后你必须按2键来启动这个项目而不需要调试,但至少它比使用鼠标更快......

答案 9 :(得分:1)

我通常直接启动可执行文件。如果我需要一个没有调试模式的解决方案,我通常会将它们添加到任务栏上的某个快速启动菜单中。

答案 10 :(得分:1)

这很快:项目|设置为StartUp Project |当前选择。然后选择哪个项目在Debug |下运行启动时不调试/ Ctrl-f5。 https://blogs.msdn.microsoft.com/saraford/2005/11/29/how-to-set-your-current-project-to-always-be-the-startup-project/

答案 11 :(得分:0)

有人做了一个插件来做到这一点。目前还没有真正处理aspnetcore项目:

https://marketplace.visualstudio.com/items?temName=vurdalak1.startwithoutdebugging

答案 12 :(得分:0)

右键单击解决方案,选择“属性”。选择多个启动项目。每个项目的组合框可让您决定启动哪些项目而无需调试。

答案 13 :(得分:-1)

  1. 将所需项目设置为启动项目(正如每个建议的那样)
  2. 关闭“解决方案配置管理器”中所有其他项目的“构建”
  3. 无需调试即可开始。