Sdílet prostřednictvím


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.