Skip to content

Commit 1f84e28

Browse files
authored
Use $(TargetFrameworkIdentifier) and $(TargetFrameworkVersion) consistently (dotnet#25428)
- always use `$([MSBuild]::VersionXYZ(...))` for version checks - use `$(NETCoreAppFrameworkIdentifier)` where it's available - move `$(KnownAppHostPackOrFrameworkReferenceTfm)` setting to Directory.Build.props - use it to correct `@(KnownFrameworkReference)` updates - metadata of those items still uses `netcoreapp5.0` - see also dotnet/efcore#22279 (comment) nits: - do not assume `$(TargetFrameworkVersion)` starts with a 'v'; valid w/o it - add `$(_IsMicrosoftNETCoreApp20OrOlder)` property in OpenAPI targets file - evaluate the `Condition` once instead of three times
1 parent e4b1950 commit 1f84e28

File tree

6 files changed

+31
-20
lines changed

6 files changed

+31
-20
lines changed

Diff for: Directory.Build.targets

+9-3
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,20 @@
134134
<AssemblyVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0.0</AssemblyVersion>
135135
</PropertyGroup>
136136

137+
<PropertyGroup>
138+
<KnownAppHostPackOrFrameworkReferenceTfm>$(DefaultNetCoreTargetFramework)</KnownAppHostPackOrFrameworkReferenceTfm>
139+
<KnownAppHostPackOrFrameworkReferenceTfm Condition=" '$(TargetFrameworkIdentifier)' == '$(NETCoreAppFrameworkIdentifier)' AND
140+
$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '5.0')) ">netcoreapp$(TargetFrameworkVersion.TrimStart('vV'))</KnownAppHostPackOrFrameworkReferenceTfm>
141+
</PropertyGroup>
142+
137143
<ItemGroup>
138144
<KnownFrameworkReference Update="Microsoft.NETCore.App">
139145
<!-- Always update the 'latest version', whether the repo is servicing or not. -->
140-
<LatestRuntimeFrameworkVersion Condition="'%(TargetFramework)' == '$(DefaultNetCoreTargetFramework)'">$(MicrosoftNETCoreAppRuntimeVersion)</LatestRuntimeFrameworkVersion>
146+
<LatestRuntimeFrameworkVersion Condition="'%(TargetFramework)' == '$(KnownAppHostPackOrFrameworkReferenceTfm)'">$(MicrosoftNETCoreAppRuntimeVersion)</LatestRuntimeFrameworkVersion>
141147
<!-- Only update the default runtime version for preview builds. -->
142-
<DefaultRuntimeFrameworkVersion Condition="'%(TargetFramework)' == '$(DefaultNetCoreTargetFramework)' and '$(IsServicingBuild)' != 'true'">$(MicrosoftNETCoreAppRuntimeVersion)</DefaultRuntimeFrameworkVersion>
148+
<DefaultRuntimeFrameworkVersion Condition="'%(TargetFramework)' == '$(KnownAppHostPackOrFrameworkReferenceTfm)' and '$(IsServicingBuild)' != 'true'">$(MicrosoftNETCoreAppRuntimeVersion)</DefaultRuntimeFrameworkVersion>
143149
<!-- Only update the targeting pack version for preview builds. -->
144-
<TargetingPackVersion Condition="'%(TargetFramework)' == '$(DefaultNetCoreTargetFramework)' and '$(IsServicingBuild)' != 'true'">$(MicrosoftNETCoreAppRefPackageVersion)</TargetingPackVersion>
150+
<TargetingPackVersion Condition="'%(TargetFramework)' == '$(KnownAppHostPackOrFrameworkReferenceTfm)' and '$(IsServicingBuild)' != 'true'">$(MicrosoftNETCoreAppRefPackageVersion)</TargetingPackVersion>
145151
</KnownFrameworkReference>
146152

147153
<KnownFrameworkReference Condition="'$(UseAspNetCoreSharedRuntime)' != 'true'" Remove="Microsoft.AspNetCore.App" />

Diff for: eng/Workarounds.targets

+3-6
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
<ItemGroup>
2323
<FrameworkReference Remove="Microsoft.AspNetCore.App" Condition="'$(DoNotApplyWorkaroundsToMicrosoftAspNetCoreApp)' != 'true'" />
2424
<!-- Required because the Razor SDK will generate attributes -->
25-
<Reference Include="Microsoft.AspNetCore.Mvc" Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' AND '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(GenerateRazorAssemblyInfo)' == 'true'" />
25+
<Reference Include="Microsoft.AspNetCore.Mvc" Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' AND
26+
'$(TargetFrameworkIdentifier)' == '$(NETCoreAppFrameworkIdentifier)' AND
27+
'$(GenerateRazorAssemblyInfo)' == 'true'" />
2628
</ItemGroup>
2729

2830
<!-- Workaround https://github.com/dotnet/aspnetcore/issues/7503. This chains GenerateSourceLinkFile before razor component targets run. -->
@@ -40,11 +42,6 @@
4042
<PackageReference Include="Internal.AspNetCore.BuildTasks" PrivateAssets="All" Version="$(InternalAspNetCoreBuildTasksPackageVersion)" IsImplicitlyDefined="true" />
4143
</ItemGroup>
4244

43-
<PropertyGroup>
44-
<KnownAppHostPackOrFrameworkReferenceTfm>$(DefaultNetCoreTargetFramework)</KnownAppHostPackOrFrameworkReferenceTfm>
45-
<KnownAppHostPackOrFrameworkReferenceTfm Condition="'$(KnownAppHostPackOrFrameworkReferenceTfm)' == 'net5.0'">netcoreapp5.0</KnownAppHostPackOrFrameworkReferenceTfm>
46-
</PropertyGroup>
47-
4845
<ItemGroup>
4946
<!-- Workaround when there is no vNext SDK available, copy known apphost/framework reference info from 3.1 -->
5047
<KnownAppHostPack

Diff for: eng/targets/CSharp.Common.targets

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<!-- For 'legacy' .csproj files, set map TargetFrameworkVersion back to TargetFramework -->
44
<PropertyGroup Condition=" '$(TargetFramework)' == '' AND '$(TargetFrameworks)' == '' ">
5-
<TargetFramework>net$(TargetFrameworkVersion.Substring(1).Replace('.',''))</TargetFramework>
5+
<TargetFramework>net$(TargetFrameworkVersion.TrimStart('vV').Replace('.',''))</TargetFramework>
66
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
77
</PropertyGroup>
88

Diff for: src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets

+8-4
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ Copyright (c) .NET Foundation. All rights reserved.
3838

3939
<!-- Resolve the RazorLangVersion based on values imported or TFM. -->
4040
<PropertyGroup>
41-
<_TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</_TargetFrameworkVersionWithoutV>
42-
<_TargetingNETCoreApp30OrLater Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' >= '3.0'">true</_TargetingNETCoreApp30OrLater>
43-
<_TargetingNET50OrLater Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' >= '5.0'">true</_TargetingNET50OrLater>
41+
<_TargetingNETCoreApp30OrLater Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND
42+
$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '3.0')) ">true</_TargetingNETCoreApp30OrLater>
43+
<_TargetingNET50OrLater Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND
44+
$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '5.0')) ">true</_TargetingNET50OrLater>
4445

4546
<!--
4647
Infer the RazorLangVersion if no value was specified. When adding support for newer target frameworks, list newer language versions first.
@@ -227,7 +228,10 @@ Copyright (c) .NET Foundation. All rights reserved.
227228
<CopyRefAssembliesToPublishDirectory Condition="'$(CopyRefAssembliesToPublishDirectory)'==''">$(PreserveCompilationReferences)</CopyRefAssembliesToPublishDirectory>
228229

229230
<!-- For 2.x projects desktop and .NET Core projects, if they're opting in to runtime compilation (indicated by PreserveCompilationContext=true), set PreserveCompilationReferences = true -->
230-
<PreserveCompilationReferences Condition="'$(PreserveCompilationContext)' == 'true' AND (('$(TargetFrameworkIdentifier)' == '.NETFramework') OR ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'))">true</PreserveCompilationReferences>
231+
<PreserveCompilationReferences Condition=" '$(PreserveCompilationContext)' == 'true' AND
232+
('$(TargetFrameworkIdentifier)' == '.NETFramework' OR
233+
('$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND
234+
'$(_TargetingNETCoreApp30OrLater)' != 'true')) ">true</PreserveCompilationReferences>
231235

232236
<!--
233237
We can't set the actual default value here due to evaluation order (depends on $(OutDir)).

Diff for: src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
<?xml version="1.0" encoding="utf-8" standalone="no"?>
22
<Project>
3+
<PropertyGroup>
4+
<_IsMicrosoftNETCoreApp20OrOlder>false</_IsMicrosoftNETCoreApp20OrOlder>
5+
<_IsMicrosoftNETCoreApp20OrOlder Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND
6+
$([MSBuild]::VersionLessThanOrEquals('$(TargetFrameworkVersion)', '2.0') ">true</_IsMicrosoftNETCoreApp20OrOlder>
7+
</PropertyGroup>
38
<PropertyGroup Condition=" '$(OpenApiGenerateDocuments)' == '' ">
49
<OpenApiGenerateDocuments>true</OpenApiGenerateDocuments>
5-
<OpenApiGenerateDocuments
6-
Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(TargetFrameworkVersion.TrimStart(&quot;vV&quot;))' &lt; '2.1' " />
10+
<OpenApiGenerateDocuments Condition=" $(_IsMicrosoftNETCoreApp20OrOlder) " />
711
</PropertyGroup>
812
<PropertyGroup Condition=" '$(OpenApiGenerateDocumentsOnBuild)' == '' ">
913
<OpenApiGenerateDocumentsOnBuild>$(OpenApiGenerateDocuments)</OpenApiGenerateDocumentsOnBuild>
@@ -22,7 +26,7 @@
2226
Text="OpenAPI document generation is disabled. Add '&lt;OpenApiGenerateDocuments>true&lt;/OpenApiGenerateDocuments>' to the project." />
2327
<!-- E.g. project set $(OpenApiGenerateDocuments) to 'true' but TFM is not supported. -->
2428
<Error
25-
Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(TargetFrameworkVersion.TrimStart(&quot;vV&quot;))' &lt; '2.1' "
29+
Condition=" $(_IsMicrosoftNETCoreApp20OrOlder) "
2630
Text="OpenAPI document generation is not supported when targeting netcoreapp2.0 or earlier. Disable the feature or move to a later target framework." />
2731
<!-- E.g. project set $(OpenApiGenerateDocumentsOnBuild) to 'false' but did not invoke GenerateOpenApiDocuments. -->
2832
<Error Condition=" !Exists('$(_OpenApiDocumentsCache)' )"
@@ -43,7 +47,7 @@
4347
Text="OpenAPI document generation is disabled. Add '&lt;OpenApiGenerateDocuments>true&lt;/OpenApiGenerateDocuments>' to the project." />
4448
<!-- E.g. project sets $(OpenApiGenerateDocuments) to 'true' but TFM is not supported. -->
4549
<Error
46-
Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(TargetFrameworkVersion.TrimStart(&quot;vV&quot;))' &lt; '2.1' "
50+
Condition=" $(_IsMicrosoftNETCoreApp20OrOlder) "
4751
Text="OpenAPI document generation is not supported when targeting netcoreapp2.0 or earlier. Disable the feature or move to a later target framework." />
4852

4953
<PropertyGroup>

Diff for: src/Tools/dotnet-watch/src/assets/DotNetWatch.targets

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ them to a file.
1111
DependsOnTargets="_CollectWatchItems">
1212

1313
<PropertyGroup>
14-
<_IsMicrosoftNETCoreApp31OrNewer
15-
Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '3.1'))">true</_IsMicrosoftNETCoreApp31OrNewer>
14+
<_IsMicrosoftNETCoreApp31OrNewer Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND
15+
$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '3.1'))">true</_IsMicrosoftNETCoreApp31OrNewer>
1616

1717
<_IsMicrosoftNETCoreApp31OrNewer Condition="'$(_IsMicrosoftNETCoreApp31OrNewer)' == ''">false</_IsMicrosoftNETCoreApp31OrNewer>
1818
</PropertyGroup>

0 commit comments

Comments
 (0)