Přizpůsobení sestavení řešení
Když NÁSTROJ MSBuild sestaví soubor řešení, nejprve ho interně přeloží do souboru projektu a pak ho sestaví. Vygenerovaný soubor projektu se importuje before.{solutionname}.sln.targets
před definováním cílů a after.{solutionname}.sln.targets
po importu cílů, včetně cílů nainstalovaných do $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBefore
adresářů a $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfter
adresářů.
Můžete například definovat nový cíl pro zápis vlastní zprávy protokolu po sestavení MyCustomizedSolution.sln vytvořením souboru ve stejném adresáři pojmenovaném po. MyCustomizedSolution.sln.targets , které obsahují
<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 nastavení zde neovlivní sestavení projektu.
Důležité
Přizpůsobení sestavení řešení tímto způsobem se vztahuje pouze na sestavení příkazového řádku pomocí MSBuild.exe. Nevztahuje se na sestavení v sadě Visual Studio. Z tohoto důvodu se nedoporučuje umístit 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í, jak je popsáno jinde v tomto článku.
Pokud máte mnoho souborů řešení, které chcete rozšířit stejným způsobem, ale nechcete zapisovat do $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\
složky (což obvykle vyžaduje zvýšená oprávnění), 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. Adresář.Solution.props se naimportuje na začátku sestavení řešení a na konci sestavení řešení se naimportuje Directory.Solution.targets . Když sestavíte soubor řešení, Adresář.Build.props a Directory.Build.targets se nenaimportují, takže místo toho musíte použít Directory.Solution.props a Directory.Solution.targets . Neimportují se implicitně.
Pokud máte adresář.Solution.props nebo Directory.Solution.targets v kořenové složce, ale v této složce máte řešení, které nechcete importovat, můžete použít dříve uvedené before.{solutionname}.sln.targets
soubory specifické pro řešení a after.{solutionname}.sln.targets
nastavit vlastnosti $(ImportDirectorySolutionProps)
a $(ImportDirectorySolutionTargets)
nepravda. Nebo můžete použít vlastnosti $(DirectorySolutionPropsPath)
a $(DirectorySolutionTargetsPath)
určit jiné umístění pro tyto soubory. To může být užitečné, pokud máte různé podmnožina řešení, které vyžadují určité hodnoty vlastností nebo cíle společné pro podmnožinu.