Я думаю, что есть пара моментов в этом.
1) Вы можете создать свои собственные редакторы типов для свойства, чтобы решить, как значения свойств будут представлены пользователям с помощью сетки свойств.
Для этого вам нужно создать редактор типов, унаследованный от UITypeEditor, вот так.
public class UriListUIEditor : UITypeEditor
{
//Override a couple of methods
}
Взгляните на эту статью кода проекта, чтобы увидеть простой пример. http://www.codeproject.com/KB/edit/flagenumeditor.aspx
Теперь укажите атрибут EditorType вашего свойства, например
[Editor(typeof(Utils. UriListUIEditor ),
typeof(System.Drawing.Design.UITypeEditor))]
public string Uri
{ get;set;
}
2) Для итерации решений в вашем проекте получите текущий экземпляр DTE
var dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal. GetActiveObject("VisualStudio.DTE.8.0");
И повторять все проекты, чтобы создать список или URI или что-нибудь еще. В идеале вы делаете это внутри метода EditValue вышеупомянутого UriListUIEditor.
foreach (var project in dte.Solution.Projects)
{
}
Надеюсь, это поможет