Как запустить один проект без отладки в Visual Studio? - PullRequest
59 голосов
/ 31 августа 2009

Мое решение содержит несколько проектов, которые можно запустить. Иногда я хотел бы запустить один проект, не используя настройки своего проекта. Когда я щелкаю правой кнопкой мыши по проекту, я могу перейти к Debug-> Start New Instance, который запускает приложение с отладчиком.

Но я бы хотел начать новый экземпляр без отладчика. Это возможно?

Ответы [ 14 ]

17 голосов
/ 31 августа 2009

Если вы заинтересованы в постоянном решении, я написал небольшой макрос для этой задачи. Это делает следующие вещи:

  1. Получает текущий выбранный проект (будет использоваться первый выбранный проект, если вы выбрали несколько проектов.)
  2. Сохраняет текущий стартовый проект
  3. Устанавливает текущий выбранный проект в качестве проекта запуска и запускает текущий выбранный проект в режиме «Запуск без отладки».
  4. Восстанавливает начальный проект запуска как проект запуска.

Ниже приведен макрос, который я написал, и процедура, как это сделать.

Как написать макрос: Первым делом вам нужно перейти в Visual Studio Tools -> Macros -> Macro Explorer. Как только вы получили этот щелчок правой кнопкой мыши на 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, поставив 'в начале строки. Теперь окно сообщения не появится.

Я смотрю в него и опубликую обновленный макрос, как только решу (если смогу :))

15 голосов
/ 19 апреля 2013

Добавить VSCommands расширение в Visual Studio, щелкните правой кнопкой мыши проект -> Отладка -> Запуск без отладки

14 голосов
/ 07 января 2016

Возможно, это новинка в VS 2015, но нет необходимости добавлять собственный макрос - вы можете найти пункт меню Пуск без отладки в списке вещей, которые вы можете добавить.

Перейдите в Инструменты -> Настройка, следуйте изображениям ниже.

Hit Add Command Here you can find the menu item

8 голосов
/ 13 января 2010

Я только что собрал этот макрос. Это комбинация нескольких фрагментов, которые я нашел вокруг паутины. Если проект настроен для запуска вывода проекта по умолчанию, он найдет и запустит его. Если он настроен на запуск определенной программы, он запустит это. Этот макрос также НЕ будет компилировать ваше приложение, поэтому вы должны убедиться, что оно скомпилировано перед запуском макроса. В то же время этот макрос не страдает от проблемы, упомянутой в макросе Махина выше.

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 голосов
/ 24 февраля 2011

Вот способ решить проблему, связанную с макросом Махина

Описание проблемы. Четвертый шаг - создание проблемы, которая порождает надоедливое окно с сообщением: сборка должна быть остановлена ​​для изменения свойства решения. Остановить сборку? ОК или Отмена.

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

Наслаждайтесь!

3 голосов
/ 30 сентября 2009

Я пытался сделать то же самое. Похоже, что команда разработчиков VS упускает возможность начинать с отладки или без нее на уровне решения, но только с отладки на уровне проекта.

Одна вещь, которую я заметил, это то, что если вы щелкнете правой кнопкой мыши на панели инструментов и выберете «Настроить», во всплывающем окне действий перейдите в категорию «Проект». Там есть команда «Выполнить» и «Выполнить выбранные». Интересно, что я добавил и в контекстное меню своего проекта, и в основную панель кнопок, и элементы, кажется, всегда отключены.

Также интересно, что команда контекстного меню проекта «Debug | Start New Instance» нигде не встречается в списке настраиваемых команд. Я просмотрел почти все категории и не смог найти ее.

Надеюсь, кто-нибудь придумает хороший способ сделать это ... это было бы очень удобно!

2 голосов
/ 31 августа 2009

Короче №.

Что вы можете сделать, это связать ключ с «Установить как запускаемый проект», а затем связать другой ключ для запуска без отладки. Тогда вам придется нажать 2 клавиши, чтобы запустить этот проект без отладки, но, по крайней мере, это будет быстрее, чем с помощью мыши ...

2 голосов
/ 31 августа 2009

Щелкните правой кнопкой мыши по проекту и установите его как Startup Project.

Нажмите Ctrl + F5

2 голосов
/ 31 августа 2009

Использование Запуск без отладки в меню отладки или

Ctrl + F5

или вы можете изменить файл web.config для проекта:

<compilation debug="false"/>
1 голос
/ 21 июля 2017

Это довольно быстро: 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...