forked from dotnet/aspnetcore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDirectory.Build.targets.in
115 lines (106 loc) · 7.16 KB
/
Directory.Build.targets.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<Project>
<PropertyGroup>
<!-- Workaround while there is no SDK available that understands the TFM; suppress unsupported version errors. -->
<NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
<UpdateAspNetCoreKnownFramework
Condition=" '$(UpdateAspNetCoreKnownFramework)' == '' ">true</UpdateAspNetCoreKnownFramework>
</PropertyGroup>
<!-- Workaround when there is no vNext SDK available; copy known apphost/framework reference info from 6.0. -->
<ItemGroup>
<KnownAppHostPack
Include="@(KnownAppHostPack->WithMetadataValue('TargetFramework', 'net6.0'))"
TargetFramework="${DefaultNetCoreTargetFramework}"
Condition="'@(KnownAppHostPack->Count())' != '0' AND
!(@(KnownAppHostPack->AnyHaveMetadataValue('TargetFramework', '${DefaultNetCoreTargetFramework}')))" />
<KnownRuntimePack
Include="@(KnownRuntimePack->WithMetadataValue('TargetFramework', 'net6.0'))"
TargetFramework="${DefaultNetCoreTargetFramework}"
Condition="'@(KnownRuntimePack->Count())' != '0' AND
!(@(KnownRuntimePack->AnyHaveMetadataValue('TargetFramework', '${DefaultNetCoreTargetFramework}')))" />
<KnownFrameworkReference
Include="@(KnownFrameworkReference->WithMetadataValue('TargetFramework', 'net6.0'))"
TargetFramework="${DefaultNetCoreTargetFramework}"
Condition="'@(KnownFrameworkReference->Count())' != '0' AND
!(@(KnownFrameworkReference->AnyHaveMetadataValue('TargetFramework', '${DefaultNetCoreTargetFramework}')))" />
</ItemGroup>
<ItemGroup>
<!--
Reference base shared framework at incoming dependency flow version, not bundled sdk version.
Apply this to all projects that target the default tfm (e.g. net7.0) or a rid-based variant of it (e.g. net7.0-windows)
-->
<FrameworkReference
Update="Microsoft.NETCore.App"
Condition=" (('$(ProjectTargetFrameworkIdentifier)' == '${DefaultNetCoreTargetFramework}') AND '${DefaultNetCoreTargetFramework}' == '$(ProjectTargetFrameworkVersion)') AND '$(TargetLatestDotNetRuntime)' != 'false' "
RuntimeFrameworkVersion="${MicrosoftNETCoreAppRuntimeVersion}"
TargetingPackVersion="${MicrosoftNETCoreAppRefVersion}" />
</ItemGroup>
<ItemGroup>
<!-- Use the same NETCore shared framework as repo built against except when building product code in servicing. -->
<KnownFrameworkReference Update="Microsoft.NETCore.App">
<LatestRuntimeFrameworkVersion
Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRuntimeVersion}</LatestRuntimeFrameworkVersion>
<TargetingPackVersion
Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRefVersion}</TargetingPackVersion>
<!--
Change the default shared framework version only when _not_ servicing. Avoid bumping version used in most
projects. When servicing, projects (Microsoft.AspNetCore.App.Runtime in particular) can use
$(TargetLatestRuntimePatch) to explicitly control whether assemblies build against default (false) or
latest (true). When that property is not set, SDK uses default metadata in most cases but published apps
e.g. tool projects (again, property not set) use latest.
On the other hand, $(TargetLatestDotNetRuntime) is specific to this repo and controls only the update below.
-->
<DefaultRuntimeFrameworkVersion Condition=" '$(IsServicingBuild)' != 'true' AND
'%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' AND
'$(TargetLatestDotNetRuntime)' != 'false' ">${MicrosoftNETCoreAppRuntimeVersion}</DefaultRuntimeFrameworkVersion>
</KnownFrameworkReference>
<KnownAppHostPack Update="Microsoft.NETCore.App">
<AppHostPackVersion
Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRuntimeVersion}</AppHostPackVersion>
</KnownAppHostPack>
<KnownRuntimePack Update="Microsoft.NETCore.App">
<LatestRuntimeFrameworkVersion
Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRuntimeVersion}</LatestRuntimeFrameworkVersion>
</KnownRuntimePack>
<!-- Use the just-built ASP.NET Core shared framework if available except when building product code in servicing. -->
<KnownFrameworkReference Update="Microsoft.AspNetCore.App" Condition=" $(UpdateAspNetCoreKnownFramework) ">
<LatestRuntimeFrameworkVersion
Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftAspNetCoreAppRuntimeVersion}</LatestRuntimeFrameworkVersion>
<RuntimePackRuntimeIdentifiers
Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${SupportedRuntimeIdentifiers}</RuntimePackRuntimeIdentifiers>
<!-- Do not update %(TargetingPackVersion) until X.Y.0 versions have been released. -->
<TargetingPackVersion
Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' AND '${AspNetCorePatchVersion}' != '1' ">${MicrosoftAspNetCoreAppRefVersion}</TargetingPackVersion>
<DefaultRuntimeFrameworkVersion Condition=" '$(IsServicingBuild)' != 'true' AND
'%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftAspNetCoreAppRuntimeVersion}</DefaultRuntimeFrameworkVersion>
</KnownFrameworkReference>
</ItemGroup>
<!-- Warn if the "just-built" ASP.NET Core shared framework does not exist. -->
<Target Name="WarnAboutMissingSharedFramework"
BeforeTargets="Restore;Build;Rebuild;RunTests;Test;VSTest;Pack"
Condition=" $(UpdateAspNetCoreKnownFramework) ">
<PropertyGroup>
<!--
Property (already normalized) from Arcade SDK's RepoLayout.props. This covers all projects using the
Arcade SDK. Ignore $(LocalDotNetRoot) because that is set in root Directory.Build.props (where Arcade SDK
is imported) and therefore doesn't cover additional projects.
-->
<_DotNetRoot Condition=" '$(DotNetRoot)' != '' ">$(DotNetRoot)</_DotNetRoot>
<!--
Environment variable from eng/common/tools.ps1 scripts. This covers tests and assets that do not use the
Arcade SDK but are run from our build.* scripts.
-->
<_DotNetRoot Condition=" '$(_DotNetRoot)' == '' AND
'$(DOTNET_INSTALL_DIR)' != '' ">$([MSBuild]::NormalizeDirectory('$(DOTNET_INSTALL_DIR)'))</_DotNetRoot>
<!--
Environment variable from root activate.* and Helix runtest.* scripts. This covers tests and assets on
Helix agents and when run locally using 'msbuild' after activation.
-->
<_DotNetRoot Condition=" '$(_DotNetRoot)' == '' AND
'$(DOTNET_ROOT)' != '' ">$([MSBuild]::NormalizeDirectory('$(DOTNET_ROOT)'))</_DotNetRoot>
</PropertyGroup>
<Error Text="Unable to determine dotnet root location." Condition=" '$(_DotNetRoot)' == '' " />
<Error Text="Dotnet root location '$(_DotNetRoot)' does not exist." Condition=" !EXISTS('$(_DotNetRoot)') " />
<Warning Text="Requested Microsoft.AspNetCore.App v${MicrosoftAspNetCoreAppRuntimeVersion} does not exist."
Condition=" !EXISTS('$(_DotNetRoot)shared\Microsoft.AspNetCore.App\${MicrosoftAspNetCoreAppRuntimeVersion}') " />
</Target>
</Project>