I think there are a couple of peices to this.
1) You can create your own type editors for a property, to decide how the property values are presented to the users using the property grid.
For this, you need to create a type editor, inheriting from UITypeEditor, like this.
public class UriListUIEditor : UITypeEditor
{
//Override a couple of methods
}
Have a look at this codeproject article to see a simple example. http://www.codeproject.com/KB/edit/flagenumeditor.aspx
Now, provide the EditorType attribute of your property, like
[Editor(typeof(Utils. UriListUIEditor ),
typeof(System.Drawing.Design.UITypeEditor))]
public string Uri
{ get;set;
}
2) To iterate solutions in your project, get the current DTE Instance
var dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal. GetActiveObject("VisualStudio.DTE.8.0");
And Iterate through all the projects to build the list or URIs or anything. Ideally you do this inside the EditValue method of the above UriListUIEditor.
foreach (var project in dte.Solution.Projects)
{
}
Hope this helps