eng/build/WorkerExtensions.targets (27 lines of code) (raw):
<Project>
<PropertyGroup>
<_ExtensionProjectTemplate>$(MSBuildThisFileDirectory)/extensionValidationProjectTemplate.txt</_ExtensionProjectTemplate>
<_ExtensionValidationLocation>$(IntermediateOutputPath)ExtensionValidation/</_ExtensionValidationLocation>
</PropertyGroup>
<Target Name="AddWebJobsExtensionInformation" BeforeTargets="GetAssemblyAttributes" Condition="'@(WebJobsExtension)' != ''">
<ItemGroup>
<_ExtensionInformationAttribute Include="@(WebJobsExtension->'Microsoft.Azure.Functions.Worker.Extensions.Abstractions.ExtensionInformationAttribute')">
<_Parameter1>%(WebJobsExtension.Identity)</_Parameter1>
<_Parameter2>%(WebJobsExtension.Version)</_Parameter2>
</_ExtensionInformationAttribute>
<AssemblyAttribute Include="@(_ExtensionInformationAttribute)" RemoveMetadata="Version" />
</ItemGroup>
</Target>
<Target Name="GenerateExtensionProject" AfterTargets="Compile" Condition="'@(WebJobsExtension)' != '' and '$(ContinuousIntegrationBuild)' == 'true'">
<MakeDir Directories="$(_ExtensionValidationLocation)" />
<WriteLinesToFile
File="$(_ExtensionValidationLocation)ExtensionValidation.csproj"
Lines="$([System.IO.File]::ReadAllText($(_ExtensionProjectTemplate))
.Replace('$PackageName$', '%(WebJobsExtension.Identity)')
.Replace('$PackageVersion$', '%(WebJobsExtension.Version)'))"
Overwrite="true" />
</Target>
<Target Name="RestoreGeneratedExtensionProject" AfterTargets="GenerateExtensionProject" Condition="'@(WebJobsExtension)' != '' and '$(ContinuousIntegrationBuild)' == 'true'">
<MSBuild Projects="$(_ExtensionValidationLocation)ExtensionValidation.csproj" Targets="Restore" />
</Target>
</Project>