Страницы свойств в Visual Studio (*.vsprops)

Posted: вторник, 9 марта 2010 г.

Сколько же ещё тайн хранит в себе Microsoft Visual Studio? :) Так, совсем недавно я узнал про страницы свойств (property sheets)… Я давно был уверен, что в VS есть подобный функционал, однако, не знал где именно его искать. Собственно, что это такое и для чего оно вообще нужно.

Дело было вечером, делать было нечего… Писал я проектик с модульной архитектурой, и надоело мне для каждого вновь создаваемого модуля прописывать пути поиска заголовочных файлов, выходную директорию, различные параметры компиляции и т.д. Оказалось, в Visual Studio для этого предусмотрены страницы свойств: в них описываются стандартные свойства, наследуемые всеми проектами, которые затем в каждом отдельном проекте можно переопределить.

Сам файл свойств *.vsprops представляет собой обычный xml-файл. Всё, что я нашёл в MSDN касательно работы со страницами свойств, это xsd-схему, описывающую допустимые узлы; и я некоторое время правил эти файлы вручную. Что ж, видимо плохо искал, потому что есть гораздо более удобный способ, о котором я и напишу.

Начнём с того, что откроем окошко управления страницами свойств. Это делается через меню «Вид» — «Диспетчер свойств» (в нормальной, английской студии это «View» — «Property Manager»). Видим на экране нечто похожее на следующее:

Property Manager

Выделенная жёлтым строка — созданный мною файл страниц свойств. Для создания необходимо всего лишь нажать правой кнопкой на проект в Диспетчере свойств и выбрать соответствующий пункт. Существующий файл страниц свойств можно добавить в любое количество других проектов.

Самое интересное — это непосредственно настройка свойств. По двойному клику на заданные страницы свойств открывается вот такое окошко:

Property Sheet Свойства, которым присваиваются значения, отличные от стандартных, выделяются полужирным шрифтом. Помимо всего прочего для страницы свойств можно задавать пользовательские макросы. В самом файле, естественно, сохраняются только изменённые свойства.

Чтобы установить в проекте те значения свойств, которые мы задали в vsprops-файле, в настройках проекта их необходимо унаследовать вот так:

Project Properties (в английской версии VS — «inherit from parent or project defaults»), что соответствует макросу $(Inherit).

Иногда (особенно в случае со свойствами, представленными набором значений, например каталоги включения заголовочных файлов и т.п.) нужно, чтобы значения не наследовались. Для этого используется соответственно макрос $(NoInherit). Однако в этом случае все «нужные» свойства придётся прописывать вручную. Делать такое имеет смысл тогда, когда у вас большинство проектов имеет одинаковые значения подобных свойств, и лишь один — два отличаются, иначе вся затея теряет смысл.

Вот в общем-то и всё. Хотите узнать подробнее — читайте MSDN. До встречи в эфире :)

 

P.S. Да, я знаю, что я извращенец, поэтому прошу прощения за русскую студию… Вдруг кому глаз режет (:

blog comments powered by Disqus