171 lines
7.5 KiB
XML
171 lines
7.5 KiB
XML
<Project>
|
|
<Import Project="AzureIntegration.targets" />
|
|
<Import Project="SharedFx.targets" />
|
|
<Import Project="CodeSign.targets" />
|
|
|
|
<PropertyGroup>
|
|
<!-- Some projects need access to tasks bundled in KoreBuild. -->
|
|
<BuildProperties>$(BuildProperties);BuildToolsTaskAssembly=$(_BuildToolsAssembly)</BuildProperties>
|
|
|
|
<!-- Reset the default korebuild lifecycle. -->
|
|
<BuildDependsOn>Prepare</BuildDependsOn>
|
|
<!-- Map bootstrapper flags to KoreBuild targets -->
|
|
<BuildDependsOn Condition=" '$(_RunRestore)' == 'true' ">$(BuildDependsOn);Restore</BuildDependsOn>
|
|
<BuildDependsOn Condition=" '$(_RunBuild)' == 'true' ">$(BuildDependsOn);Compile</BuildDependsOn>
|
|
<BuildDependsOn Condition=" '$(_RunPack)' == 'true' ">$(BuildDependsOn);Package</BuildDependsOn>
|
|
<BuildDependsOn Condition=" '$(_RunTests)' == 'true' ">$(BuildDependsOn);Test;Verify</BuildDependsOn>
|
|
<SkipTests Condition=" '$(_RunTests)' != 'true' ">true</SkipTests>
|
|
<DisableCodeSigning Condition=" '$(_RunSign)' != 'true' OR '$(OS)' != 'Windows_NT' ">true</DisableCodeSigning>
|
|
|
|
<CleanDependsOn>$(CleanDependsOn);CleanArtifacts</CleanDependsOn>
|
|
|
|
<RestoreDependsOn>$(RestoreDependsOn);InstallDotNet;RestoreProjects</RestoreDependsOn>
|
|
|
|
<CompileDependsOn />
|
|
<CompileDependsOn Condition=" '$(_RunRestore)' == 'true' ">Restore</CompileDependsOn>
|
|
<CompileDependsOn>$(CompileDependsOn);BuildProjects</CompileDependsOn>
|
|
|
|
<PackageDependsOn>$(PackageDependsOn);PackProjects</PackageDependsOn>
|
|
<PackageDependsOn Condition=" '$(BuildAllProjects)' == 'true' ">$(PackageDependsOn);BuildSharedFx;RemoveSharedFrameworkOnlyRefsFromNuspec</PackageDependsOn>
|
|
|
|
<TestDependsOn />
|
|
<TestDependsOn Condition=" '$(_RunBuild)' == 'true' ">$(TestDependsOn);Compile</TestDependsOn>
|
|
<TestDependsOn>$(TestDependsOn);TestProjects</TestDependsOn>
|
|
|
|
<BuildDependsOn Condition="'$(CI)' == 'true'">$(BuildDependsOn);GenerateBuildAssetManifest</BuildDependsOn>
|
|
|
|
<!-- Package modification must happen before code signing. -->
|
|
<CodeSignDependsOn>$(CodeSignDependsOn);RemoveSharedFrameworkOnlyRefsFromNuspec</CodeSignDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="ShowProjectClosure" DependsOnTargets="ResolveProjects">
|
|
<MSBuild Targets="_CustomCollectProjectReference"
|
|
BuildInParallel="true"
|
|
SkipNonexistentTargets="true"
|
|
Projects="@(ProjectToBuild)"
|
|
Properties="DesignTimeBuild=true"
|
|
RebaseOutputs="True">
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ReferenceProject" />
|
|
</MSBuild>
|
|
<RemoveDuplicates Inputs="@(_ReferenceProject->'%(FullPath)')">
|
|
<Output TaskParameter="Filtered" ItemName="ReferencedProjects" />
|
|
</RemoveDuplicates>
|
|
<Message Importance="High" Text="Projects referenced:" />
|
|
<Message Importance="High" Text=" - %(ReferencedProjects.Identity)" />
|
|
|
|
<WriteLinesToFile Lines="@(ReferencedProjects)" File="$(ProjectsReferencedOutFile)" Overwrite="true" Condition="'$(ProjectsReferencedOutFile)' != ''" />
|
|
</Target>
|
|
|
|
<Target Name="GenerateProjectList" DependsOnTargets="ResolveProjects">
|
|
<MSBuild Projects="@(ProjectToBuild)"
|
|
Targets="GetReferencesProvided"
|
|
BuildInParallel="true"
|
|
SkipNonexistentTargets="true"
|
|
SkipNonexistentProjects="true" >
|
|
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ProjectReferenceProvider"/>
|
|
</MSBuild>
|
|
|
|
<ItemGroup>
|
|
<_SharedFrameworkAndPackageRef Include="@(_ProjectReferenceProvider->WithMetadataValue('IsAspNetCoreApp','true')->WithMetadataValue('IsShippingPackage', 'true')->Distinct())" />
|
|
<_SharedFrameworkRef Include="@(_ProjectReferenceProvider->WithMetadataValue('IsAspNetCoreApp','true')->WithMetadataValue('IsShippingPackage', 'false')->Distinct())" />
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup>
|
|
<ProjectListFile>$(MSBuildThisFileDirectory)..\eng\ProjectReferences.props</ProjectListFile>
|
|
<ProjectListContent>
|
|
<![CDATA[
|
|
<!--
|
|
This file is automatically generated. Run `./eng/scripts/GenerateProjectList.ps1` to update.
|
|
|
|
This file contains a map of assembly names to the projects that build them.
|
|
-->
|
|
<Project>
|
|
<ItemGroup>
|
|
@(_ProjectReferenceProvider->'<ProjectReferenceProvider Include="%(Identity)" ProjectPath="%24(RepositoryRoot)%(ProjectFileRelativePath)" />', '%0A ')
|
|
</ItemGroup>
|
|
</Project>
|
|
]]>
|
|
</ProjectListContent>
|
|
</PropertyGroup>
|
|
|
|
<WriteLinesToFile File="$(ProjectListFile)" Lines="$(ProjectListContent)" Overwrite="true" />
|
|
|
|
<PropertyGroup>
|
|
<SharedFxDepList>$(MSBuildThisFileDirectory)..\eng\SharedFramework.Local.props</SharedFxDepList>
|
|
<SharedFxDepListContent>
|
|
<![CDATA[
|
|
<!--
|
|
This file is automatically generated. Run `./eng/scripts/GenerateProjectList.ps1` to update.
|
|
|
|
This file contains a complete list of the assemblies which are part of the shared framework.
|
|
|
|
This project is generated using the <IsAspNetCoreApp> and <IsShippingPackage> properties from each .csproj in this repository.
|
|
-->
|
|
<Project>
|
|
<ItemGroup>
|
|
<!-- These assemblies are available as both a NuGet package and in the shared framework -->
|
|
@(_SharedFrameworkAndPackageRef->'<AspNetCoreAppReferenceAndPackage Include="%(Identity)" />', '%0A ')
|
|
|
|
<!-- These assemblies are only in the shared framework -->
|
|
@(_SharedFrameworkRef->'<AspNetCoreAppReference Include="%(Identity)" />', '%0A ')
|
|
</ItemGroup>
|
|
</Project>
|
|
]]>
|
|
</SharedFxDepListContent>
|
|
</PropertyGroup>
|
|
|
|
<WriteLinesToFile File="$(SharedFxDepList)" Lines="$(SharedFxDepListContent)" Overwrite="true" />
|
|
</Target>
|
|
|
|
<!-- This is temporary until we can use FrameworkReference to build our own packages. -->
|
|
<Target Name="RemoveSharedFrameworkOnlyRefsFromNuspec">
|
|
<ItemGroup>
|
|
<_BuildOutput Include="$(ArtifactsShippingPackagesDir)*.nupkg"
|
|
Exclude="$(ArtifactsShippingPackagesDir)*.symbols.nupkg" />
|
|
</ItemGroup>
|
|
|
|
<RepoTasks.RemoveSharedFrameworkDependencies Condition="@(_BuildOutput->Count()) != 0"
|
|
Files="@(_BuildOutput)"
|
|
FrameworkOnlyPackages="@(AspNetCoreAppReference)" />
|
|
</Target>
|
|
|
|
<Target Name="GenerateBuildAssetManifest">
|
|
<!-- Generate build manifests. These manifests are used by Maestro and the Build Asset Registry to flow dependencies to other repos. -->
|
|
<MSBuild Projects="$(MSBuildThisFileDirectory)Maestro\Maestro.csproj"
|
|
Targets="Restore"
|
|
Properties="$(BuildProperties);__DummyTarget=Restore" />
|
|
|
|
<MSBuild Projects="$(MSBuildThisFileDirectory)Maestro\Maestro.csproj"
|
|
Targets="GenerateBuildAssetManifest"
|
|
Properties="$(BuildProperties);__DummyTarget=GenerateBuildAssetManifest" />
|
|
</Target>
|
|
|
|
<!-- will move into korebuild -->
|
|
<Target Name="HelixPublish" DependsOnTargets="Restore">
|
|
<ItemGroup>
|
|
<CsProjects Include="@(ProjectToBuild)" Condition="'%(Extension)' == '.csproj'" />
|
|
</ItemGroup>
|
|
<MSBuild Projects="@(CsProjects)"
|
|
Targets="PrepareHelixPayload"
|
|
BuildInParallel="false">
|
|
<Output TaskParameter="TargetOutputs" ItemName="HelixDirectory" />
|
|
</MSBuild>
|
|
|
|
<ItemGroup>
|
|
<HelixTestProject Include="@(HelixDirectory)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="Helix" DependsOnTargets="HelixPublish">
|
|
<PropertyGroup>
|
|
<HelixTestProjects>@(HelixTestProject)</HelixTestProjects>
|
|
</PropertyGroup>
|
|
<MSBuild Projects="$(MSBuildThisFileDirectory)..\eng\helix\helix.proj"
|
|
Targets="Test"
|
|
Properties="ProjectsToTest=$(HelixTestProjects)"
|
|
ContinueOnError="ErrorAndStop"
|
|
BuildInParallel="false" />
|
|
</Target>
|
|
</Project>
|