Una macro di Visual Studio per elencare tutte le dipendenze di un progetto della solution
A Visual Studio macro that lists build dependencies of a project
Sub CollectProjectDependencies(ByVal Project As VSLangProj.VSProject _
, ByVal Dependencies As Hashtable)
Dim BuildDependency As EnvDTE.BuildDependency = _
DTE.Solution.SolutionBuild.BuildDependencies.Item(Project.Project)
Dim RequiredProjects As System.Array = BuildDependency.RequiredProjects
For Each RequiredProjectObject As Object In RequiredProjects
Dim RequiredProject As EnvDTE.Project = RequiredProjectObject
If Not Dependencies.ContainsKey(RequiredProject.UniqueName) Then
Dependencies.Add(RequiredProject.UniqueName, RequiredProject.Object)
CollectProjectDependencies(RequiredProject.Object, Dependencies)
End If
Next
End Sub
Un esempi di chiamata alla macro indicando lo UniqueName del progetto
Sample code to call the macro passing the project UniqueName
Dim Prj As EnvDTE.Project
Try
Prj = DTE.Solution.Projects.Item("NummableTypes\src\Types\Types.csproj")
Catch
MsgBox("Project not in the solution.", MsgBoxStyle.Exclamation)
Return
End Try
Dim VSProject As VSLangProj.VSProject = Prj.Object
Dim Dependencies As Hashtable = New Hashtable()
CollectProjectDependencies(VSProject, Dependencies)
DTE.ExecuteCommand("Debug.Output")
DTE.ExecuteCommand("View.Output")
For Each Dict As DictionaryEntry In Dependencies
DTE.ToolWindows.OutputWindow.ActivePane.OutputString(Dict.Key _
+ Environment.NewLine)
Next
Niente paura, ecco il codice per conoscere gli UniqueName dei progetti caricati:
And here is the code to get all the UniqueNames of the projects
Sub ShowAllProjectsUniqueNames()
If Not DTE.Solution.IsOpen Then
MsgBox("Open a solution.", MsgBoxStyle.Exclamation)
Return
End If
For Each Project As EnvDTE.Project In DTE.Solution.Projects
MsgBox(Project.UniqueName())
Next
End Sub