Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подтипу проекта может понадобиться сохранить специфичные для него данные в файл проекта для последующего использования. Подтип проекта использует сохраняемость файла проекта в соответствии со следующими требованиями:
Сохранять данные, используемые в процессе создания проекта. (Дополнительные сведения о подсистеме сборки Майкрософт см. в msBuild.) Сведения, связанные со сборкой, могут:
Независимые от конфигурации данные. То есть данные, хранящиеся в элементах MSBuild с пустыми или отсутствующими условиями.
Данные, зависящие от конфигурации. То есть данные, хранящиеся в элементах MSBuild, предназначенные для конкретной конфигурации проекта. Рассмотрим пример.
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
Сохраняйте данные, не относящиеся к процессу сборки. Эти данные можно выразить в XML-файле свободной формы, который не проверяется на основе xml-схемы.
Независимые от конфигурации данные.
Данные, зависящие от конфигурации.
Сохранение сведений, связанных с билдами
Сохраняемость данных, полезных для создания проекта, обрабатывается через MSBuild. Система MSBuild поддерживает главную таблицу сведений, связанных с сборкой. Подтипы проекта отвечают за доступ к этим данным для получения и задания значений свойств. Подтипы проекта также могут расширить таблицу данных, связанную со сборкой, добавив дополнительные свойства для сохранения и удалив свойства, чтобы они не сохранялись.
Чтобы изменить данные MSBuild, подтип проекта отвечает за получение объекта свойства MSBuild из базовой системы проектов через IVsBuildPropertyStorage.
IVsBuildPropertyStorage— это интерфейс, реализованный в основной системе проекта, и агрегирование запросов подтипа проекта путем выполнения.QueryInterface
В следующей процедуре описаны шаги по удалению свойства с помощью IVsBuildPropertyStorage.
Удаление свойства из файла проекта MSBuild
Вызовите
QueryInterfaceна IVsBuildPropertyStorage подтипа проекта.Вызовите RemoveProperty, указав в
pszPropNameсвойство, которое требуется удалить.
Сохранение информации, не связанной со сборкой
Сохраняемость данных в файлах проекта, которые не имеют значения для сборки, обрабатываются с помощью IPersistXMLFragment.
Можно реализовать IPersistXMLFragment на основном объекте project subtype aggregator, на объекте project subtype project configuration или на обоих.
Ниже описаны основные понятия, касающиеся сохраняемости информации, не связанной со сборкой.
Базовый проект вызывает агрегатор основного подтипа проекта (то есть самого внешнего подтипа проекта) для загрузки и сохранения данных, не зависящих от конфигурации, и вызывает объекты конфигурации подтипа проекта для загрузки или сохранения данных, зависящих от конфигурации.
Базовый проект вызывает методы IPersistXMLFragment нескольких раз для каждого уровня агрегирования подтипа проекта и передает GUID для каждого уровня.
Базовый проект передает или получает xml-фрагмент, выделенный для определенного подтипа проекта, и использует этот механизм в качестве способа сохранения состояния между уровнями агрегирования.
Базовый проект вызывает реализацию самого внешнего подтипа IPersistXMLFragmentпроекта, передаваемую в GUID. Если GUID принадлежит к самому внешнему подтипу проекта, он обрабатывает сам вызов; в противном случае он делегирует вызов внутреннего подтипа проекта и т. д., пока не будет найден подтип проекта, соответствующий GUID.
Подтип проекта также может изменить фрагмент XML до или после делегирования вызова вложенному подтипу проекта. В следующем примере показан фрагмент из файла проекта, где имя файла, содержащего свойства, относящиеся к подтипу проекта, передается в этот подтип проекта.
<ProjectExtensions> <VisualStudio> <FlavorProperties GUID="{<FlavorGUID>}"> <FlavorProject TestFileFolder="TestFile" /> </FlavorProperties> </VisualStudio> </ProjectExtensions>