Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Události sestavení slouží k určení příkazů, které se spustí před spuštěním sestavení nebo po dokončení sestavení.
Specifikujte událost sestavení
V Průzkumníku řešenívyberte projekt, pro který chcete zadat událost sestavení.
V nabídce Project klepněte na Vlastnosti.
Vyberte kartu Události sestavení.
V příkazovém řádku před sestavením zadejte syntaxi události sestavení.
Poznámka
Události před sestavením se nespustí, pokud je projekt aktuální a nedojde k žádnému sestavení.
V poli Příkazový řádek události po sestavení specifikujte syntaxi příkazu události sestavení.
Poznámka
Před všechny příkazy po sestavení, které spouští
callsoubory, přidejte příkaz . Napříkladcall MyFile.batnebocall MyFile.bat call MyFile2.bat. Cesty můžou být absolutní nebo relativní vzhledem k výstupní složce.V poli Spustit událost po sestavení zadejte, za jakých podmínek má být spuštěna událost po sestavení.
V Průzkumníku řešenívyberte projekt, pro který chcete zadat událost sestavení.
V nabídce Project klikněte na vlastnosti aplikace {ProjectName} (nebo v průzkumníku řešení , stiskněte Alt+Enter).
Vyberte sestavení > události.
V části událost před sestavením zadejte syntaxi události sestavení.
Poznámka
Události před sestavením se nespustí, pokud je projekt aktuální a nedojde k žádnému sestavení.
V části Událost post-build zadejte syntaxi pro událost sestavení.
Poznámka
Před všechny příkazy po sestavení, které spouští
callsoubory, přidejte příkaz . Napříkladcall MyFile.batnebocall MyFile.bat call MyFile2.bat. Cesty můžou být absolutní nebo relativní vzhledem k výstupní složce.V části Kdy spustit událost po sestavení určete, za jakých podmínek se má událost po sestavení spustit.
Vytvořte příkazy události sestavení
Příkazy události sestavení můžou obsahovat libovolný příkaz, který je platný na příkazovém řádku nebo v souboru .bat. Dostupné příkazy jsou dokumentovány ve Windows příkazové referenci. Název dávkového souboru by měl začínat znakem call, aby bylo zajištěno spuštění všech následných příkazů. Samotný dávkový soubor se spouští z výstupní složky, například bin/Debug. Pokud potřebujete stejný dávkový soubor pro všechny konfigurace, můžete ho umístit do stejné složky jako soubor projektu a použít k němu relativní cestu, například call ../../prebuild.bat.
Skripty powershellu můžete spustit zadáním příkazu, jako je PowerShell MyPowerShellScript.ps1. Cesta ke skriptu PowerShellu může být absolutní nebo relativní vzhledem k adresáři projektu. Abyste mohli skript spustit, musíte se ujistit, že zásady spouštění pro skripty PowerShellu ve vašem operačním systému jsou správně nastavené. Viz O zásadách spouštění.
Pokud chcete použít jiné prostředí, například Bash, obecně byste použili stejnou syntaxi příkazů, jakou byste použili ke spuštění skriptu prostředí z příkazového řádku Windows. Použití prostředí třetích stran je nad rámec této dokumentace, ale weby, jako je Stack Overflow, můžou být užitečné.
V souboru projektu
Při provádění předchozích kroků sada Visual Studio upraví soubor projektu přidáním cíle PreBuild nebo PostBuild a potřebným kódem MSBuild k provedení vámi zadaných kroků. Můžete otevřít soubor projektu a zobrazit kroky. Úprava kroků v souboru projektu je v pořádku. Změny se zobrazí v části vlastností projektu, a to v sekci Sestavení > Události, po jejich uložení.
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="call prebuild.bat" />
</Target>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="call postbuild.bat" />
</Target>
Element Exec odkazuje na úlohu Exec MSBuild. Podívejte se na úlohu Exec pro informace o tom, jaké další parametry můžete použít k přizpůsobení vykonávání. Můžete například použít WorkingDirectory k nastavení složky, ze které je spustitelný soubor spuštěn. Výchozí je adresář, který obsahuje soubor projektu.
<Exec Command="call prebuild.bat" WorkingDirectory="$(OutDir)">
Můžete použít vlastnosti (makra) nástroje MSBuild, jako je například OutDir v předchozím příkladu, jak bude dále popsáno v tomto článku v sekci Makra.
Chyby a další výstup
Výstup událostí sestavení se zapíše do části Sestavení okna výstupu . Pokud ho chcete otevřít, zvolte Zobrazit>Jiné Windows, Výstupní oknonebo stiskněte Ctrl+Alt+O. V rozevíracím seznamu vedle Zobrazit výstup zzvolte Build.
Pokud se událost před sestavením nebo po sestavení úspěšně nedokončí, můžete sestavení ukončit tak, že akci události ukončíte jiným kódem než nulou (0). Nulový ukončovací kód označuje úspěšnou akci; jakýkoli jiný ukončovací kód se považuje za chybu.
Pokud se událost před sestavením nezdaří, může se v okně seznamu chyb zobrazit podobná chyba:
MSB3073 The command "call c:\source\repos\prebuild.bat" exited with code 1.
Pokud v okně seznam chyb není dostatek informací, můžete zkusit použít okno výstupu k zobrazení úplného výstupu sestavení, včetně jakéhokoli výstupu z dávkových souborů.
Spropitné
Okno Seznam chyb je omezené jenom na jeden řádek výstupu, první řádek, který jste zadali pro událost. Pokud je pro vás důležitý výstup okna seznam chyb, vyhněte se vložení více než jednoho řádku do události. Vytvořte dávkový soubor z příkazového řádku Windows nebo v operačním systému a pak pro událost jednoduše použijte call mybatchfile.bat. Zahrňte příkazy do samotného dávkového souboru.
Pokyny k příkazům, které můžete použít v dávkových souborech, najdete v tématu příkazy systému Windows.
Makra
Běžně dostupná "makra" (ve skutečnosti vlastnosti MSBuild) jsou uvedena v společných vlastnostech MSBuild. Pro projekty .NET SDK (.NET Core nebo .NET 5 a novější) jsou uvedeny další vlastnosti v MSBuild vlastnosti pro Microsoft.NET.Sdk.
Ve skriptech pro události sestavení můžete chtít odkazovat na hodnoty některých proměnných na úrovni projektu, jako je název projektu nebo umístění výstupní složky. V předchozích verzích sady Visual Studio se tyto makra nazývají . Ekvivalentem maker v posledních verzích sady Visual Studio jsou vlastnosti MSBuild. MSBuild je modul sestavení, který Sada Visual Studio používá ke zpracování souboru projektu při provádění sestavení. Událost sestavení v integrovaném vývojovém prostředí vede k cíli MSBuild v souboru projektu. Můžete použít libovolnou vlastnost MSBuild, která je k dispozici v cílové části souboru projektu (například $(OutDir) nebo $(Configuration)). Vlastnosti MSBuild, které jsou k dispozici v těchto událostech, závisí na souborech implicitně nebo explicitně importovaných do souboru projektu, jako jsou soubory .props a .targets, a na vlastnostech nastavených v souboru projektu, například v prvcích PropertyGroup. Dávejte pozor, abyste použili přesný název každé vlastnosti. Není hlášena žádná chyba, pokud chybně zadáte vlastnost; Místo toho se nedefinovaná vlastnost vyhodnotí jako prázdný řetězec.
Předpokládejme například, že zadáte událost před sestavením následujícím způsobem:
Tato událost před sestavením vede k následující položce označované jako Target v souboru projektu:
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="echo Configuration: $(Configuration)
echo DevEnvDir: $(DevEnvDir)
echo OutDir: $(OutDir)
echo ProjectDir: $(ProjectDir)
echo VisualStudioVersion: $(VisualStudioVersion)
echo AssemblySearchPaths: $(AssemblySearchPaths)
echo AssemblyName: $(AssemblyName)
echo BaseIntermediateOutputPath: $(BaseIntermediateOutputPath)
echo CscToolPath: $(CscToolPath)" />
</Target>
Událost sestavení se zobrazí jako cíl, který obsahuje úlohu Exec se vstupem zadaným jako Command. Znakové konce řádků jsou kódovány v XML.
Když projekt sestavíte v tomto příkladu, událost před sestavením vytiskne hodnoty některých vlastností. V tomto příkladu $(CscToolPath) nevygeneruje žádný výstup, protože není definován. Jedná se o volitelnou vlastnost, kterou můžete definovat v souboru projektu, abyste dali cestu k přizpůsobené instanci kompilátoru jazyka C# (například pokud jste testovali jinou verzi csc.exenebo experimentální kompilátor).
Výstup z vašich událostí sestavení je zaznamenáván do výstupu sestavení, který najdete v okně Výstup. V rozevíracím seznamu Zobrazit výstup z zvolte Build.
Build started...
1>------ Build started: Project: ConsoleApp4, Configuration: Debug Any CPU ------
1>You are using a preview version of .NET. See: https://aka.ms/dotnet-core-preview
1>Configuration: Debug
1>DevEnvDir: C:\Program Files\Microsoft Visual Studio\2022\Preview\Common7\IDE\
1>OutDir: bin\Debug\net6.0\
1>ProjectDir: C:\source\repos\ConsoleApp4\ConsoleApp4\
1>VisualStudioVersion: 17.0
1>ALToolsPath:
1>AssemblySearchPaths: {CandidateAssemblyFiles};{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
1>AssemblyName: ConsoleApp4
1>BaseIntermediateOutputPath: obj\
1>CscToolsPath:
1>Skipping analyzers to speed up the build. You can execute 'Build' or 'Rebuild' command to run analyzers.
1>ConsoleApp4 -> C:\source\repos\ConsoleApp4\ConsoleApp4\bin\Debug\net6.0\ConsoleApp4.dll
Poznámka
Některé scénáře vyžadují složitější akce sestavení, než umožňují události sestavení. Například v mnoha běžných scénářích generování kódu potřebujete zpracovat operace čištění a opětovného sestavení a můžete chtít povolit přírůstkové sestavení pro kroky generování kódu, aby se krok spustil pouze v případě, že je výstup zastaralý s ohledem na vstupy. Nástroj MSBuild je navržen tak, aby inteligentně zpracovával všechny tyto scénáře. Zvažte vytvoření vlastního cíle, který určuje AfterTargets nebo BeforeTargets, jež se mají spustit v určitý bod procesu sestavení, a pro další kontrolu v pokročilých scénářích zvažte vytvoření vlastního úkolu , nebo si projděte různé způsoby, jak můžete přizpůsobit sestavení .
Příklad 1
Zadejte příkaz pro kopírování, který zkopíruje výstup sestavení do jiné složky.
xcopy "$(TargetDir)*.*" "C:\Drop\$(Configuration)\" /E /YPříkaz odkazuje na vlastnosti
TargetDirMSBuild aConfiguration. Všimněte si použití uvozovek, které jsou nutné pro zpracování cest s mezerami.Ukončete Návrháře vlastností a sestavte. Výstupní soubory by se měly zkopírovat do cílové složky
C:\DroppodsložkyConfiguration.V okně Výstup pomocí rozevíracího seznamu přepněte na zobrazení výstupu sestavení a zjistěte, kde
xcopybyl příkaz volána. Pokud se zobrazí chyba, ověřte, že má váš uživatelský účet přístup k umístění pro zápis.
Příklad 2
Ve složce projektu vytvořte dávkový soubor s názvem
postbuild.bats následujícím obsahem:echo Copying output file %1 to %1.copy copy %1 %1.copyVzpomeňte si, že v dávkovém souboru
%1odkazuje na první argument předaný.Zavolejte dávkový soubor v části události Post-build vlastností projektu a předávejte argument pomocí vlastnosti MSBuild
$(TargetPath).call postbuild.bat $(TargetPath)Pokud potřebujete použít hodnotu vlastnosti MSBuild (makra) v dávkovém souboru, můžete ji předat jako argument, jak je znázorněno zde.
Sestavte projekt a zkontrolujte výstupní složku. Měl by se zobrazit zkopírovaný soubor vedle sestaveného sestavení. V okně výstupu v části Sestavení by se měl zobrazit výstup z dávkového souboru:
1>Output file is C:\source\repos\ConsoleApp-BuildEvents\ConsoleApp-BuildEvents\bin\Debug\net6.0\ConsoleApp-BuildEvents.dll 1> 1 file(s) copied. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ========== Build started at 12:00 PM and took 00.723 seconds ==========