如何在没有在Visual Studio中进行调试的情况下启动单个项目?

问题描述:

我的解决方案包含可以启动的多个项目。有时候我想开始一个项目而不使用我的解决方案启动项目设置。当我右键点击项目时,我可以导航到Debug-> Start New Instance,它使用调试器启动应用程序。如何在没有在Visual Studio中进行调试的情况下启动单个项目?

但我想开始一个没有调试器的新实例。这可能吗?

+6

我已经进入了一个请愿书,获得此功能添加到Visual Studio到他们的UserVoice的论坛。获得一些关于这个功能的投票可能是看到这个实现的最好机会。 http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2267061-add-a-start-without-debugging-option-for-individua – jpierson 2011-09-29 14:27:04

如果你有兴趣永久性的解决方案,然后我写了这个任务,小宏。 它做以下事情:

  1. 获取当前选定的项目(它将使用第一个选定的项目,如果你选择了多个项目。)
  2. 保存当前的启动项目
  3. 将当前选择的项目作为启动项目,然后在“无调试开始”模式下运行当前选定的项目。
  4. 将初始启动项目恢复为启动项目。

下面是我写的宏,以及如何做到这一点的过程。

如何写宏: 首先你需要去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 

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

注:第四步是创建一个问题,并产生一个恼人的消息框说: 构建必须停下来改变溶液性质。停止构建?确定或取消。我过去常常打Ok。如果你没有任何问题,如果宏设置当前选定的项目作为启动项目比请评论宏的最后一行 Prop.Value = PrevStartup通过放在行的开始。现在消息框不会来。

我寻找到它,一旦我解决它会发布更新的宏(如果我可以:))

+1

宏指令太糟糕了。 – Shimmy 2017-06-08 12:23:03

设置作为启动项目并按下Ctrl + F5或从菜单选项中选择调试菜单+开始不调试。

+1

即要开始的所有项目,而不仅仅是一个。 – 2009-08-31 09:11:56

使用启动无下调试菜单调试,或

按Ctrl + F5

,或者你可以修改web.config文件项目:

<compilation debug="false"/> 
+5

这将开始所有的项目,而不仅仅是一个。 – 2009-08-31 09:13:13

+1

@MarkSeemann实际上它只会启动**被设置为*启动*的项目。 – informatik01 2013-08-12 17:56:35

+2

@ informatik01,但我们有多个项目的启动,并希望有时运行其中的一个。 – Shimmy 2017-03-08 21:53:29

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

按Ctrl + F5

+4

然而,如果您的默认启动项目实际上是您使用最多的项目,并且您很少需要启动其他项目,那将是最痛苦的。 – binki 2015-03-27 15:25:30

总之没有。

你可以做的是将一个键绑定到“设置为启动项目”上,然后绑定另一个键来启动而不进行调试。然后,你将不得不推2个键来启动这个项目不用调试,但至少会比使用鼠标更快...

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

+0

是的,但是整个问题是我们不能在没有调试尚未被选为启动项目的情况下启动。 – 2016-09-30 07:44:41

+2

然后你将如何启动一个ASP.NET Core项目? – Shimmy 2017-03-08 21:55:09

  1. 设置所需的项目是启动项目(如每隔曾建议)
  2. 关闭“建设”为不调试的解决方案配置管理器
  3. 启动所有其他项目。

我一直在试图做同样的事情。这似乎是VS团队的一个疏忽,您可以在解决方案级别开始或不进行调试,但只能在项目级别进行调试。

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

另外有趣的是,项目上下文菜单中的“Debug | Start New Instance”命令无处可查到可定制命令列表。我浏览了几乎所有的类别,但找不到它。

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

+0

感谢分享。我也考虑过增加跑步。我正在谈论2017年! – Shimmy 2017-03-08 21:54:40

我只是把这个宏放在一起..它是我在interweb周围发现的几个片段的组合。如果项目配置为运行默认项目输出,它将找到并运行该项目。如果它被配置为运行特定的程序,它将运行该程序。这个宏不会编译你的应用程序,所以你需要确保它在编译之前运行宏。与此同时,这个宏并没有受到上面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 
+0

太棒了!我喜欢这样的事实,它不尝试切换启动项目(如果你已经调试不工作) – 2010-12-02 19:35:37

+0

,并不与MVC项目因某种原因失效。它为我启动NUnit。你有什么想法,我怎么才能使它工作? – unkownt 2011-02-13 11:49:11

+0

@免费你可以尝试调试宏以确定采取什么路径?还提供与该路径关联的变量的值。 – 2011-02-22 16:25:55

这里是一路解决与马欣宏观

问题说明问题:第四步是创建一个问题,并产生一个恼人的消息框说:构建必须停止改变解决方案属性停止构建?确定或取消。

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 

Enjoy!

添加VSCommands扩展到Visual Studio中,右键单击一个项目 - >调试 - >不开始调试

+1

不幸的是,它不适用于VS 2008 :( – MikeD 2014-01-07 19:58:19

+0

VS2015的扩展VSCommands的开发似乎被放弃。 – Nicolas 2017-05-15 13:25:53

+0

VSCommands不再可用 – Shimmy 2017-06-08 12:28:38

也许这是在VS 2015年新的,但没有必要添加自定义宏 - 你能找到的不开始调试您可以添加的东西列表中的菜单项。

进入工具 - >自定义,请按照下面的图片。

Hit Add Command Here you can find the menu item

+0

伟大的答案,特别是VSCommands为Visual Studio 2015年似乎并没有这个设备呢。另外,加入了新的命令这种方式是不特定的2015年,因为它在以前的版本中存在过。 – Jerry 2016-02-08 10:56:37

+21

的问题是,它总是开始启动项目,而不是项目下上下文菜单 – Yegor 2016-06-08 06:46:53

+5

..很重要的是程序员在想什么?为什么我会在每个项目中添加一个只能激活启动项目的按钮...... – 2016-09-30 07:50:17

这是相当快:工程|设置为启动项目|当前选择。然后,无论选择哪个项目,都在Debug |下运行无需调试/ Ctrl-f5启动。 https://blogs.msdn.microsoft.com/saraford/2005/11/29/how-to-set-your-current-project-to-always-be-the-startup-project/