Sdílet prostřednictvím


Integrace sady Visual Studio (MSBuild)

Visual Studio hostuje NÁSTROJ MSBuild pro načítání a sestavování spravovaných projektů. Vzhledem k tomu, že msBuild je zodpovědný za projekt, může být téměř jakýkoli projekt ve formátu MSBuild úspěšně použit v sadě Visual Studio, i když byl projekt vytvořený jiným nástrojem a má přizpůsobený proces sestavení.

Tento článek popisuje konkrétní aspekty hostování nástroje MSBuild sady Visual Studio, které by se měly zvážit při přizpůsobení projektů a souborů .targets , které chcete načíst a sestavit v sadě Visual Studio. Pomůže vám to zajistit, aby funkce sady Visual Studio, jako je IntelliSense, a ladění fungovaly pro váš vlastní projekt.

Informace o projektech C++ naleznete v tématu Soubory projektu.

Přípony názvů souborů projektu

MSBuild.exe rozpozná jakoukoli příponu názvu projektu odpovídající vzoru .*proj. Visual Studio však rozpozná pouze podmnožinu těchto přípon názvů souborů projektu, která určí systém projektu specifický pro jazyk, který projekt načte. Visual Studio nemá systém projektů založený na jazykově neutrálním nástroji MSBuild.

Například systém projektu C# načte soubory .csproj , ale Visual Studio nemůže načíst soubor .xxproj . Soubor projektu pro zdrojové soubory v libovolném jazyce musí používat stejnou příponu jako soubory projektu jazyka Visual Basic nebo C#, které se mají načíst v sadě Visual Studio.

Známé cílové názvy

Kliknutím na příkaz Sestavení v sadě Visual Studio se v projektu spustí výchozí cíl. Tento cíl je často také pojmenován Build. Když zvolíte příkaz Znovu sestavit nebo vyčistit , pokusí se v projektu spustit cíl se stejným názvem. Kliknutím na Publikovat spustíte cíl pojmenovaný PublishOnly v projektu.

Konfigurace a platformy

Konfigurace jsou reprezentovány v projektech MSBuild vlastnostmi seskupenými v elementu PropertyGroup , který obsahuje Condition atribut. Visual Studio tyto podmínky sleduje, aby se vytvořil seznam konfigurací a platforem projektu, které se mají zobrazit. K úspěšnému extrahování tohoto seznamu musí mít podmínky formát podobný následujícímu:

Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "
Condition=" '$(Configuration)' == 'Release' " 
Condition=" '$(Something)|$(Configuration)|$(SomethingElse)' == 'xxx|Debug|yyy' "

Visual Studio pro tento účel sleduje podmínky pro PropertyGroup, , ItemGroupImport, vlastnost a prvky položky.

Další akce sestavení

Visual Studio umožňuje změnit název typu položky souboru v projektu s vlastností Akce sestavení okna Vlastnosti souboru. V této nabídce jsou vždy uvedeny názvy zkompilování, EmbeddedResource, Content a None a všechny ostatní názvy typů položek, které už jsou v projektu. Chcete-li zajistit, aby byly názvy vlastních typů položek vždy k dispozici v této nabídce, můžete přidat názvy do typu položky s názvem AvailableItemName. Například přidáním následujícího do souboru projektu přidáte do této nabídky vlastní typ JScript pro všechny projekty, které ho naimportuje:

<ItemGroup>
    <AvailableItemName Include="JScript"/>
</ItemGroup>

Přidání názvů typů položek do AvailableItemName typu položky způsobí, že se položky tohoto typu zobrazí v Průzkumník řešení.

Poznámka:

Některé názvy typů položek jsou pro Visual Studio speciální, ale nejsou uvedené v tomto rozevíracím seznamu.

Kompilátory v procesu

Pokud je to možné, visual Studio se pokusí použít verzi kompilátoru jazyka Visual Basic v procesu pro zvýšení výkonu. (Nelze použít pro jazyk C#.) Aby to fungovalo správně, musí být splněny následující podmínky:

  • V cíli projektu musí být úkol pojmenovaný Vbc pro projekty jazyka Visual Basic.

  • Parametr UseHostCompilerIfAvailable úkolu musí být nastaven na hodnotu true.

IntelliSense v době návrhu

Pokud chcete získat podporu IntelliSense v sadě Visual Studio před vygenerovaným sestavením výstupu, musí být splněny následující podmínky:

  • Musí existovat cíl s názvem Compile.

  • Compile Cíl nebo jeden z jeho závislostí musí volat úkol kompilátoru pro projekt, například Csc nebo Vbc.

  • Compile Cíl nebo jedna z jejích závislostí musí způsobit, že kompilátor obdrží všechny nezbytné parametry pro IntelliSense, zejména všechny odkazy.

  • Podmínky uvedené v části Kompilátory procesu musí být splněny .

Vytváření řešení

V sadě Visual Studio se pořadí sestavení řešení a sestavení projektu řídí samotná sada Visual Studio. Při vytváření řešení s msbuild.exe na příkazovém řádku nástroj MSBuild parsuje soubor řešení a objedná sestavení projektu. V obou případech jsou projekty sestaveny jednotlivě v pořadí závislostí a projektové odkazy na projekt se neprojdou. Naproti tomu při vytváření jednotlivých projektů pomocí msbuild.exe se odkazy na projekt přejdou.

Při sestavování uvnitř sady Visual Studio je vlastnost $(BuildingInsideVisualStudio) nastavena na true. To se dá použít v souborech projektu nebo .targets , aby se sestavení chovalo jinak.

Zobrazení vlastností a položek

Visual Studio rozpozná určité názvy a hodnoty vlastností. Například následující vlastnost v projektu způsobí, že aplikace systému Windows se zobrazí v poli Typ aplikace v Návrháři projektu.

<OutputType>WinExe</OutputType>

Hodnotu vlastnosti lze upravit v Návrháři projektu a uložit do souboru projektu. Pokud je taková vlastnost ručně upravena neplatnou hodnotou, zobrazí Visual Studio při načtení projektu upozornění a nahradí neplatnou hodnotu výchozí hodnotou.

Visual Studio rozumí výchozím nastavením některých vlastností. Tyto vlastnosti nebudou zachovány v souboru projektu, pokud nemají jiné než výchozí hodnoty.

Vlastnosti s libovolnými názvy se v sadě Visual Studio nezobrazují. Chcete-li upravit libovolné vlastnosti v sadě Visual Studio, musíte otevřít soubor projektu v editoru XML a upravit je ručně. Další informace najdete v části Upravit soubory projektu v sadě Visual Studio dále v tomto tématu.

Položky definované v projektu s libovolnými názvy typů položek se ve výchozím nastavení zobrazují v Průzkumník řešení pod uzlem projektu. Chcete-li skrýt položku ze zobrazení, nastavte Visible metadata na false. Například následující položka se bude účastnit procesu sestavení, ale nebude zobrazena v Průzkumník řešení.

<ItemGroup>
    <IntermediateFile Include="cache.temp">
        <Visible>false</Visible>
    </IntermediateFile>
</ItemGroup>

Poznámka:

Metadata Visible jsou ignorována Průzkumník řešení pro projekty C++. Položky se vždy zobrazí i v případě, že Visible je nastavená hodnota false.

Položky deklarované v souborech importovaných do projektu se ve výchozím nastavení nezobrazují. Položky vytvořené během procesu sestavení se v Průzkumník řešení nezobrazí.

Podmínky pro položky a vlastnosti

Během sestavení jsou všechny podmínky plně dodrženy.

Při určování hodnot vlastností, které se mají zobrazit, se vlastnosti, které Sada Visual Studio považuje za závislé na konfiguraci, vyhodnotí jinak než vlastnosti, které považuje za nezávislé na konfiguraci. U vlastností, které považuje za závislé na konfiguraci, sada Visual Studio správně nastaví Configuration a Platform vlastnosti a dá nástroji MSBuild pokyn, aby projekt znovu vyhodnotil. U vlastností, které považuje konfiguraci za nezávislou, je neurčité, jak budou podmínky vyhodnoceny.

Podmíněné výrazy u položek jsou vždy ignorovány pro účely rozhodování, zda má být položka zobrazena v Průzkumník řešení.

Ladění

Aby bylo možné najít a spustit výstupní sestavení a připojit ladicí program, visual Studio potřebuje vlastnosti OutputPath, AssemblyNamea OutputType správně definované. Ladicí program se nepodaří připojit, pokud proces sestavení nezpůsobil, že kompilátor vygeneruje soubor .pdb .

Provádění cíle v době návrhu

Visual Studio se při načtení projektu pokusí spouštět cíle s určitými názvy. Mezi tyto cíle patří Compile, , ResolveAssemblyReferencesResolveCOMReferences, GetFrameworkPathsa CopyRunEnvironmentFiles. Visual Studio tyto cíle spouští, aby kompilátor mohl být inicializován tak, aby poskytoval IntelliSense, ladicí program lze inicializovat a odkazy zobrazené v Průzkumník řešení lze přeložit. Pokud tyto cíle nejsou k dispozici, projekt se načte a sestaví správně, ale prostředí návrhu v sadě Visual Studio nebude plně funkční.

Úprava souborů projektu v sadě Visual Studio

Chcete-li upravit projekt MSBuild přímo, můžete otevřít soubor projektu v editoru VISUAL Studio XML.

Uvolnění projektu a jeho úprava v sadě Visual Studio

  1. V Průzkumník řešení klikněte pravým tlačítkem myši na uzel projektu a pak zvolte Uvolnit projekt.

    Projekt je označený (není k dispozici).

  2. V Průzkumník řešení klikněte pravým tlačítkem myši na uzel nedostupného projektu a pak zvolte Upravit <soubor> projektu.

    Soubor projektu se otevře v editoru XML sady Visual Studio.

  3. Upravte, uložte a zavřete soubor projektu.

  4. V Průzkumník řešení klikněte pravým tlačítkem myši na uzel nedostupného projektu a pak zvolte Znovu načíst projekt.

IntelliSense a ověřování

Při použití editoru XML k úpravě souborů projektu je IntelliSense a ověření řízeny soubory schématu MSBuild. Tyto soubory jsou nainstalovány v mezipaměti schémat, které lze najít v <instalačním adresáři> sady Visual Studio\Xml\Schemas\1033\MSBuild.

Základní typy MSBuild jsou definovány v Microsoft.Build.Core.xsd a běžné typy používané sadou Visual Studio jsou definovány v Microsoft.Build.CommonTypes.xsd. Chcete-li přizpůsobit schémata tak, abyste měli technologii IntelliSense a ověření názvů vlastních typů položek, vlastností a úkolů, můžete upravit microsoft.build.xsd nebo vytvořit vlastní schéma, které obsahuje schémata CommonTypes nebo Core. Pokud vytvoříte vlastní schéma, budete muset nasměrovat editor XML tak, aby ho našel pomocí okna Vlastnosti .

Úprava načtených souborů projektu

Visual Studio ukládá obsah souborů projektu a souborů importovaných soubory projektu do mezipaměti. Pokud upravíte načtený soubor projektu, Sada Visual Studio vás automaticky vyzve k opětovnému načtení projektu, aby se změny projevily. Pokud ale upravíte soubor importovaný načteným projektem, nezobrazí se výzva k opětovnému načtení a musíte projekt znovu načíst a znovu načíst ručně, aby se změny projevily.

Výstupní skupiny

Několik cílů definovaných v microsoft.Common.targets mají názvy končící na OutputGroups nebo OutputGroupDependencies. Visual Studio tyto cíle volá, aby získal konkrétní seznamy výstupů projektu. Cíl například SatelliteDllsProjectOutputGroup vytvoří seznam všech satelitních sestavení, která vytvoří sestavení. Tyto výstupní skupiny používají funkce, jako je publikování, nasazení a projekt pro odkazy na projekty. Projekty, které je nedefinují, se načtou a sestaví v sadě Visual Studio, ale některé funkce nemusí fungovat správně.

Referenční rozlišení

Překlad odkazů je proces použití referenčních položek uložených v souboru projektu k vyhledání skutečných sestavení. Visual Studio musí aktivovat překlad odkazů, aby bylo možné zobrazit podrobné vlastnosti pro jednotlivé odkazy v okně Vlastnosti . Následující seznam popisuje tři typy odkazů a způsob jejich řešení.

  • Odkazy na sestavení:

    Systém projektu volá cíl s dobře známým názvem ResolveAssemblyReferences. Tento cíl by měl vytvářet položky s názvem ReferencePathtypu položky . Každá z těchto položek by měla mít specifikaci položky (hodnotu Include atributu položky), která obsahuje úplnou cestu k odkazu. Kromě následujících nových metadat by tyto položky měly obsahovat všechna metadata ze vstupních položek:

    • CopyLocaloznačuje, zda má být sestavení zkopírováno do výstupní složky, nastaveno na hodnotu true nebo false.

    • OriginalItemSpecobsahující původní specifikaci položky odkazu.

    • ResolvedFrom, nastavte na {TargetFrameworkDirectory}, pokud byl přeložen z adresáře rozhraní .NET Framework.

  • Odkazy modelu COM:

    Systém projektu volá cíl s dobře známým názvem ResolveCOMReferences. Tento cíl by měl vytvářet položky s názvem ComReferenceWrapperstypu položky . Každá z těchto položek by měla mít specifikaci položky obsahující úplnou cestu k sestavení vzájemné spolupráce pro odkaz modelu COM. Položky by měly mít všechna metadata ze vstupních položek předávaných kromě nových metadat s názvem CopyLocal, označující, zda má být sestavení zkopírováno do výstupní složky, nastaveno na true nebo false.

  • Nativní odkazy

    Systém projektu volá cíl s dobře známým názvem ResolveNativeReferences. Tento cíl by měl vytvářet položky s názvem NativeReferenceFiletypu položky . Položky by měly mít všechna metadata ze vstupních položek předávaných kromě nové části metadat s názvem OriginalItemSpec, která obsahují původní specifikaci položky odkazu.

Klávesové zkratky výkonu

Pokud ke spuštění ladění použijete integrované vývojové prostředí sady Visual Studio (buď zvolením klávesy F5, nebo zvolením tlačítka Spustit>ladění na řádku nabídek) nebo sestavením projektu (například řešení sestavení>), proces sestavení použije rychlou kontrolu aktualizace ke zlepšení výkonu. V některých případech, kdy přizpůsobené buildy vytvářejí soubory, které se zase sestaví, rychlá kontrola aktualizací správně neidentifikuje změněné soubory. Projekty, které potřebují důkladnější kontroly aktualizací, mohou rychlou kontrolu vypnout nastavením proměnné DISABLEFASTUPTODATECHECK=1prostředí . Projekty můžou také nastavit tuto vlastnost jako vlastnost MSBuild v projektu nebo v souboru, který projekt importuje.