Я написал большую часть решения для вас, за исключением того, что я не знал, как проверить, является ли проект проектом 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
}