Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При сборке файла решения MSBuild сначала преобразует его в файл проекта, а затем строит этот файл проекта. Созданный файл проекта может импортировать файл before.<имя>решения.sln.targets перед тем как определить любые целевые объекты, и импортировать after.<имя>решения.sln.targets после того, как импортированы целевые объекты.
Файлы целей до и после устанавливаются в каталоги $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBefore и $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfter.
Например, можно определить новую цель для записи пользовательского сообщения журнала после сборки MyCustomizedSolution.sln, создав следующий файл after.MyCustomizedSolution.sln.targets в том же каталоге.
<Project>
<Target Name="EmitCustomMessage" AfterTargets="Build">
<Message Importance="High" Text="The solution has completed the Build target" />
</Target>
</Project>
Сборка решения отличается от сборок проекта, поэтому эти параметры не влияют на сборки проекта.
Это важно
Настройка сборки решения таким образом применяется только к сборкам командной строки с помощью MSBuild.exe или dotnet buildне применяется к сборкам внутри Visual Studio. Поэтому рекомендуется не помещать настройки на уровне решения. Более эффективной альтернативой настройке всех проектов в решении является использование файлов Directory.Build.props и Directory.Build.targets в папке решения.
Для записи в папку $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile обычно требуются повышенные разрешения. Если у вас есть много файлов решения для расширения таким же образом, но вы не хотите записывать их в папку SolutionFile , можно создать файлы Directory.Solution.props и Directory.Solution.targets и поместить их в корневой путь над файлами решения, которые вы хотите расширить.
Directory.Solution.props импортируется в начале сборки решения, а Directory.Solution.targets импортируется в конце сборки решения.
При создании файла решения Directory.Build.props и Directory.Build.targets не импортируются, поэтому вместо этого необходимо использовать Directory.Solution.props и Directory.Solution.targets. Два типа файлов не импортируют друг друга автоматически.
Если у вас есть файлы Directory.Solution.props или Directory.Solution.targets в корневой папке, но вы не хотите, чтобы решение, находящееся в этой папке, импортировало эти файлы, вы можете использовать файл перед.<solutionname>.sln.targets для задания свойств ImportDirectorySolutionProps и ImportDirectorySolutionTargets значения false.
Кроме того, можно использовать $(DirectorySolutionPropsPath) свойства и $(DirectorySolutionTargetsPath) свойства, чтобы указать другое расположение для этих файлов. Этот подход может быть полезным, если подмножества решений требуют определенных значений свойств или целевых объектов в общих случаях.
Примечание.
Сборка решения поддерживается в формате файла решения .slnx в MSBuild 17.12 и более поздних версиях. Оба файла до.<solutionname>.slnx.targets и до.<solutionname>.sln.targets, а также соответствующие после файлы работают с MSBuild 17.14 и более поздними версиями.
Дополнительные сведения о параметрах настройки сборки см. в разделе "Настройка сборки".