Как программно изменить настройки в листе свойств VS2010?

Я ищу метод (макрос/плагин/расширение) для изменения значений в определенном листе свойств (который загружается в каждый проект в решении) без перезагрузки решения. Есть ли способ получить к нему доступ из кода макроса или плагина?

Спасибо!


person Mark S    schedule 04.02.2013    source источник


Ответы (2)


Записывайте макрос при редактировании листа свойств и просматривайте его код в интегрированной среде разработки макросов. Впоследствии вы можете назначить ему привязки клавиш и воспроизводить в любое время.

person Soundararajan    schedule 04.02.2013
comment
Макрос не записывает ни выбор листа свойств, ни изменения внутри листа свойств. Все, что я получаю, это DTE.Windows.Item({DE1FC918-F32E-4DD7-A915-1792A051F26B}).Activate, который активирует диспетчер свойств и не работает при повторном воспроизведении. Далее следует DTE.ExecuteCommand(View.PropertyPages), который открывает текущую выбранную страницу свойств. - person Mark S; 04.02.2013
comment
Какой лист собственности? Это стандартный лист свойств Visual Studio? Мне было интересно, можем ли мы попробовать изменить базовую модель, а не представление. - person Soundararajan; 05.02.2013
comment
Возможно, это может помочь? blogs.msdn.com/b/visualstudio/archive/2010/01/15/ - person Soundararajan; 05.02.2013

Вот так я попал на работу. И вы должны добавить ссылку на VCEngine в свой проект.

VCProject project;
Projects projCollection = sol1.Projects;
project = (VCProject)projCollection.Item(1).Object;
VCConfiguration config = project.Configurations.Item("Test Release|Win32");
IVCRulePropertyStorage rule = config.Rules.Item("ConfigurationDirectories") as IVCRulePropertyStorage;

//Setting the Include directories
string rawValue = rule.GetUnevaluatedPropertyValue("IncludePath");
string evaluatedValue = rule.GetEvaluatedPropertyValue("IncludePath");
rule.SetPropertyValue("IncludePath", "Whatever you like to specify here");
//Setting the Executable Directory
rawValue = rule.GetUnevaluatedPropertyValue("ExecutablePath");
rule.SetPropertyValue("ExecutablePath", "Whatever you like to specify here");
person Community    schedule 04.03.2016