Sdílet prostřednictvím


Trvalá data v souboru projektu nástroje MSBuild

Podtyp projektu může být potřeba zachovat data specifická pro podtypy do souboru projektu pro pozdější použití. Podtyp projektu používá trvalost souboru projektu ke splnění následujících požadavků:

  1. Zachovat data používaná při vytváření projektu (Další informace o modulu microsoft buildu najdete v tématu MSBuild.) Informace související s sestavením můžou být následující:

    1. Data nezávislá na konfiguraci To znamená, že data uložená v elementech MSBuild s prázdnými nebo chybějícími podmínkami.

    2. Data závislá na konfiguraci To znamená, že data uložená v elementech MSBuild, které jsou podmíněné pro konkrétní konfiguraci projektu. Příklad:

      <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
      
  2. Zachovat data, která nejsou pro sestavení relevantní. Tato data lze vyjádřit ve formátu XML volného formátu, který není ověřen proti schématu XML.

    1. Data nezávislá na konfiguraci

    2. Data závislá na konfiguraci

Trvalost dat, která jsou užitečná při vytváření projektu, se zpracovává prostřednictvím nástroje MSBuild. Systém MSBuild udržuje hlavní tabulku informací souvisejících s sestavením. Podtypy projektu zodpovídají za přístup k datům za účelem získání a nastavení hodnot vlastností. Podtypy projektu můžou také rozšířit tabulku dat souvisejících s sestavením přidáním dalších vlastností, které se mají zachovat, a odebráním vlastností, aby nebyly trvalé.

Chcete-li upravit data MSBuild, je podtyp projektu zodpovědný za načtení objektu vlastnosti MSBuild ze základního systému projektu prostřednictvím IVsBuildPropertyStorage. IVsBuildPropertyStorage je rozhraní implementované v základním projektovém systému a agregační podtyp projektu dotazuje spuštěním QueryInterface.

Následující postup popisuje kroky pro odebrání vlastnosti pomocí IVsBuildPropertyStorage.

Odebrání vlastnosti ze souboru projektu MSBuild

  1. IVsBuildPropertyStorage Volání QueryInterface podtypu projektu

  2. Volání RemoveProperty s pszPropName nastavenou vlastností, kterou chcete odebrat.

Trvalost dat v projektových souborech, které nezáleží na sestavení, se zpracovává prostřednictvím IPersistXMLFragment.

U hlavního project subtype aggregator objektu, objektu nebo obojího project subtype project configuration můžete implementovatIPersistXMLFragment.

Následující body popisují hlavní koncepty týkající se trvalosti nevytvořovaných informací.

  • Základní projekt volá hlavní podtyp projektu (tj. nejkrajnější podtyp projektu) objekt agregátoru, který načte a uloží konfigurační nezávislá data a volá objekty konfigurace podtypu projektu, které načítají nebo ukládají data závislá na konfiguraci.

  • Základní projekt volá metody IPersistXMLFragment vícekrát pro každou úroveň agregace podtypů projektu a předává identifikátor GUID pro každou úroveň.

  • Základní projekt předá nebo přijme fragment XML vyhrazený pro určitý podtyp projektu a tento mechanismus používá jako způsob zachování stavu mezi úrovněmi agregace.

  • Základní projekt volá implementaci vnějšího podtypu IPersistXMLFragmentprojektu a předává identifikátor GUID. Pokud identifikátor GUID patří do vnějšího podtypu projektu, zpracovává samotné volání; jinak deleguje volání na podtyp vnitřního projektu a tak dále, dokud se nenajde podtyp projektu, který identifikátor GUID odpovídá.

  • Podtyp projektu může také před nebo po delegování volání na vnitřní podtyp projektu upravit fragment XML. Následující příklad ukazuje výňatek ze souboru projektu, kde název souboru, který obsahuje vlastnosti specifické pro podtyp projektu, se předá tomuto podtypu projektu.

    <ProjectExtensions>
        <VisualStudio>
          <FlavorProperties GUID="{<FlavorGUID>}">
            <FlavorProject TestFileFolder="TestFile" />
          </FlavorProperties>
        </VisualStudio>
      </ProjectExtensions>