Существует ли макрос / расширение, чтобы установить для всех веб-проектов в Visual Studio значение «Не открывать страницу»? - PullRequest
3 голосов
/ 26 ноября 2011

Иногда я отлаживаю проблему, возникающую в нескольких наших серверных веб-сервисах, и у меня все они настроены как стартовые проекты; когда я нажимаю F5, все они открывают новые вкладки в любом браузере, который я установил по умолчанию на тот момент - мне было бы полезно иметь возможность нажимать кнопку, и для всех настроек Project > Properties > Web > Start Action установлено значение "don" не открыть страницу. " Кто-нибудь знает макрос или расширение, которое может мне помочь?

1 Ответ

3 голосов
/ 26 ноября 2011

Я написал большую часть решения для вас, за исключением того, что я не знал, как проверить, является ли проект проектом ASP.NET или нет. Один из способов сделать это - проверить, содержит ли Project.ExtenderNames строку «WebApplication», но я не уверен, что это лучшее решение.

Sub ChangeAllWebProjectsStartActionToDontStartWebPage()
    Dim project As EnvDTE.Project
    If DTE.Solution.IsOpen Then
        For Each project In DTE.Solution.Projects
            NavProj(project)
        Next
    End If
End Sub

Sub NavProj(ByVal project As Project)
    Dim outputPathProperty As EnvDTE.Property
    Dim outputPath As String

    If Not (project.ConfigurationManager Is Nothing) Then
        ' It's a project!
        Dim extenderNames As String()
        extenderNames = project.ExtenderNames
        If (Array.IndexOf(extenderNames, "WebApplication") >= 0) Then
            project.Properties.Item("WebApplication.DebugStartAction").Value = 4 ' WebStartAction.NoStartPage
        End If
    Else
        NavProjItems(project.ProjectItems)
    End If
End Sub

Sub NavProjItems(ByVal projItems As ProjectItems)
    Dim projectItem As EnvDTE.ProjectItem

    If Not (projItems Is Nothing) Then
        For Each projectItem In projItems
            If Not (projectItem.SubProject Is Nothing) Then
                ' Recurse, can be an Enterprise project in 
                ' Visual Studio .NET 2002/2003 or a solution folder in VS 2005+
                NavProj(projectItem.SubProject)
            End If
        Next
    End If
End Sub

Это основано на действии WebStartAction, которое определяется как:

    enum WebStartAction
    {
        CurrentPage = 0,
        SpecificPage = 1,
        Program = 2,
        URL = 3,
        NoStartPage = 4
    }
...