2009-08-31 80 views
55

我的解決方案包含可以啓動的多個項目。有時候我想開始一個項目而不使用我的解決方案啓動項目設置。當我右鍵點擊項目時,我可以導航到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

回答

17

如果你有興趣永久性的解決方案,然後我寫了這個任務,小宏。 它做以下事情:

  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

-1

設置作爲啓動項目並按下Ctrl + F5或從菜單選項中選擇調試菜單+開始不調試。

+1

即要開始的所有項目,而不僅僅是一個。 – 2009-08-31 09:11:56

2

使用啓動無下調試菜單調試,或

按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

2

右鍵單擊該項目並將其設置爲啓動項目。

按Ctrl + F5

+4

然而,如果您的默認啓動項目實際上是您使用最多的項目,並且您很少需要啓動其他項目,那將是最痛苦的。 – binki 2015-03-27 15:25:30

2

總之沒有。

你可以做的是將一個鍵綁定到「設置爲啓動項目」上,然後綁定另一個鍵來啓動而不進行調試。然後,你將不得不推2個鍵來啓動這個項目不用調試,但至少會比使用鼠標更快...

2

我通常直接啓動可執行文件。如果我需要一個沒有調試模式的解決方案,我通常會將它們添加到我的任務欄某處的快速啓動菜單中。

+0

是的,但是整個問題是我們不能在沒有調試尚未被選爲啓動項目的情況下啓動。 – 2016-09-30 07:44:41

+2

然後你將如何啓動一個ASP.NET Core項目? – Shimmy 2017-03-08 21:55:09

0
  1. 設置所需的項目是啓動項目(如每隔曾建議)
  2. 關閉「建設」爲不調試的解決方案配置管理器
  3. 啓動所有其他項目。
3

我一直在試圖做同樣的事情。這似乎是VS團隊的一個疏忽,您可以在解決方案級別開始或不進行調試,但只能在項目級別進行調試。

我注意到的一件事是,如果您在工具欄上右鍵單擊並選擇「自定義」,在彈出的操作窗口中,轉到類別「項目」。在那裏,有一個命令「運行」和「運行選定」。有趣的是,我添加到我的項目上下文菜單,並添加到主要的按鈕欄,並且項目似乎總是被禁用。

另外有趣的是,項目上下文菜單中的「Debug | Start New Instance」命令無處可查到可定製命令列表。我瀏覽了幾乎所有的類別,但找不到它。

希望有人想出了一個很好的方法來做到這一點......這將是非常方便的!

+0

感謝分享。我也考慮過增加跑步。我正在談論2017年! – Shimmy 2017-03-08 21:54:40

8

我只是把這個宏放在一起..它是我在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

4

這裏是一路解決與馬欣宏觀

問題說明問題:第四步是創建一個問題,併產生一個惱人的消息框說:構建必須停止改變解決方案屬性停止構建?確定或取消。

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!

14

添加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

8

也許這是在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

相關問題