Ответ 1
Альтернативой является использование атрибута AfterTargets в Target. Что-то вроде:
<Target Name="TestTarget" AfterTargets="Build">
<Message Importance="High" Text="This is a test" />
</Target>
Я не уверен, почему "AfterBuild" больше не работает, но это представляется сознательным решением со стороны разработчиков MSBuild (h/t к Livven, указывая мне на этот вопрос github). "AfterBuild" было специальным именем, которое использовалось целью сборки. В текущей версии Microsoft.Common.CurrentVersion.targets
все еще есть:
<PropertyGroup>
<BuildDependsOn>
BeforeBuild;
CoreBuild;
AfterBuild
</BuildDependsOn>
</PropertyGroup>
<Target
Name="Build"
Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
DependsOnTargets="$(BuildDependsOn)"
Returns="$(TargetPath)" />
<!--