Sdílet prostřednictvím


Přizpůsobení buildů řešení

Když nástroj MSBuild sestaví soubor řešení, nejprve soubor interně přeloží do souboru projektu a pak tento soubor projektu sestaví. Vygenerovaný soubor projektu může importovat před.<solutionname>.sln.targets soubor před tím, než definuje jakékoli cíle, a importovat po.<solutionname>.sln.targets soubor po importu cílů.

Soubory před a po jsou nainstalovány do adresářů $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBefore a $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfter.

Například můžete definovat nový cíl pro zápis vlastní zprávy do protokolu po sestavení MyCustomizedSolution.sln vytvořením následujícího souboru s názvem after.MyCustomizedSolution.sln.targets ve stejném adresáři.

<Project>
 <Target Name="EmitCustomMessage" AfterTargets="Build">
   <Message Importance="High" Text="The solution has completed the Build target" />
 </Target>
</Project>

Sestavení řešení je oddělené od sestavení projektu, takže tato nastavení nemají vliv na sestavení projektu.

Důležitý

Přizpůsobení řešení tímto způsobem se vztahuje pouze na sestavení příkazového řádku používající MSBuild.exe nebo dotnet builda nevztahuje se na sestavení v sadě Visual Studio. Proto je lepší neumisťovat přizpůsobení na úroveň řešení. Lepší alternativou pro přizpůsobení všech projektů v řešení je použití souborů Directory.Build.props a Directory.Build.targets ve složce řešení.

Zápis do $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile složky obvykle vyžaduje zvýšená oprávnění. Pokud máte mnoho souborů řešení, které chcete rozšířit stejným způsobem, ale nechcete zapisovat do složky SolutionFile , můžete vytvořit soubory Directory.Solution.props a Directory.Solution.targets a umístit je do kořenové cesty nad soubory řešení, které chcete rozšířit. Directory.Solution.props se naimportují na začátku sestavení řešení a Directory.Solution.targets se na konci sestavení řešení naimportují.

Když sestavíte soubor řešení, Directory.Build.props a Directory.Build.targets se neimportují, takže musíte místo toho použít Directory.Solution.props a Directory.Solution.targets. Dva typy souborů se implicitně neimportují.

Pokud máte soubory Directory.Solution.props nebo Directory.Solution.targets v kořenové složce a nechcete, aby řešení v této složce importovalo tyto soubory, můžete použít před.<solutionname>.sln.targets soubor řešení pro nastavení vlastností ImportDirectorySolutionProps a ImportDirectorySolutionTargets na false.

Nebo můžete použít vlastnosti $(DirectorySolutionPropsPath) a $(DirectorySolutionTargetsPath) zadat jiné umístění pro tyto soubory. Tento přístup může být užitečný v případě, že podmnožina vašich řešení vyžadují společné určité hodnoty vlastností nebo cíle.

Poznámka:

Sestavení řešení je podporováno ve formátu souboru řešení .slnx ve verzi MSBuild 17.12 a novější. Oba before.<solutionname.slnx.targets> a before.<solutionname>.sln.targets, a odpovídající after soubory, pracují s MSBuild 17.14 a novějšími verzemi.

Další informace o možnostech přizpůsobení sestavení najdete v tématu Přizpůsobení sestavení.