Skip to content

Commit 3b8b5b8

Browse files
Avoid hardcoded TFMs in source code (#37865)
Fixes #37473 --------- Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
1 parent 8bfecfd commit 3b8b5b8

8 files changed

Lines changed: 31 additions & 35 deletions

File tree

src/EFCore.Abstractions/EFCore.Abstractions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<Description>Provides abstractions and attributes that are used to configure Entity Framework Core</Description>
5-
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
5+
<TargetFramework>$(NetMinimum)</TargetFramework>
66
<MinClientVersion>3.6</MinClientVersion>
77
<AssemblyName>Microsoft.EntityFrameworkCore.Abstractions</AssemblyName>
88
<RootNamespace>Microsoft.EntityFrameworkCore</RootNamespace>

src/EFCore.Tasks/EFCore.Tasks.csproj

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>$(NetCurrent);$(NetFrameworkToolCurrent)</TargetFrameworks>
4+
<TargetFrameworks>$(NetMinimum);$(NetFrameworkToolCurrent)</TargetFrameworks>
55
<Description>MSBuild tasks for Entity Framework Core projects.</Description>
66
<AssemblyName>Microsoft.EntityFrameworkCore.Tasks</AssemblyName>
77
<RootNamespace>Microsoft.EntityFrameworkCore</RootNamespace>
@@ -11,7 +11,7 @@
1111
<ImplicitUsings>true</ImplicitUsings>
1212
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)..\..\rulesets\EFCore.noxmldocs.ruleset</CodeAnalysisRuleSet>
1313
<TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);AddPackContent</TargetsForTfmSpecificContentInPackage>
14-
<BuildOutputTargetFolder>tasks</BuildOutputTargetFolder>
14+
<IncludeBuildOutput>false</IncludeBuildOutput>
1515
</PropertyGroup>
1616

1717
<PropertyGroup Condition="'$(TargetFramework)' == '$(NetFrameworkToolCurrent)'">
@@ -71,22 +71,27 @@
7171
</ItemGroup>
7272

7373
<Target Name="AddPackContent">
74-
<ItemGroup Condition="'$(TargetFramework)' == '$(NetCurrent)'">
75-
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(NetMinimum)/*" PackagePath="tools/$(NetCurrent)" />
76-
<TfmSpecificPackageFile Include="$(OutputPath)$(AssemblyName).deps.json" PackagePath="tasks/$(TargetFramework)" />
74+
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework'">
75+
<TfmSpecificPackageFile Include="$(TargetPath)" PackagePath="tasks/net" />
76+
<TfmSpecificPackageFile Include="$(TargetDir)$(TargetName).pdb" PackagePath="tasks/net" />
77+
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(NetMinimum)/*" PackagePath="tools/net" />
78+
<TfmSpecificPackageFile Include="$(OutputPath)$(AssemblyName).deps.json" PackagePath="tasks/net" />
7779
</ItemGroup>
7880

79-
<ItemGroup Condition="'$(TargetFramework)' == '$(NetFrameworkToolCurrent)'">
80-
<TfmSpecificPackageFile Include="$(OutputPath)*" Exclude="$(TargetPath);$(TargetDir)$(TargetName).pdb" PackagePath="tasks/$(TargetFramework)" />
81+
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
82+
<TfmSpecificPackageFile Include="$(OutputPath)*" PackagePath="tasks/netframework" />
8183
</ItemGroup>
8284

8385
<ItemGroup>
8486
<TfmSpecificDebugSymbolsFile Include="@(TfmSpecificPackageFile->WithMetadataValue('Extension', '.pdb'))"
8587
TargetPath="/%(TfmSpecificPackageFile.PackagePath)/%(Filename)%(Extension)"
8688
TargetFramework="$(TargetFramework)"
8789
Condition="'$(IncludeSymbols)' == 'true'" />
88-
<!-- Remove symbols from the non symbol package. -->
89-
<TfmSpecificPackageFile Remove="@(TfmSpecificPackageFile->WithMetadataValue('Extension', '.pdb'))" />
90+
<!--
91+
The NuGet SDK only collects TfmSpecificDebugSymbolsFile when IncludeBuildOutput is true, but this
92+
project sets IncludeBuildOutput=false. So as a workaround, we include PDBs in both packages.
93+
-->
94+
<!-- <TfmSpecificPackageFile Remove="@(TfmSpecificPackageFile->WithMetadataValue('Extension', '.pdb'))" /> -->
9095
</ItemGroup>
9196
</Target>
9297

src/EFCore.Tasks/Tasks/Internal/OperationTaskBase.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -198,18 +198,15 @@ protected override string GenerateCommandLineCommands()
198198
args.Add(runtimeFrameworkVersion);
199199
}
200200

201-
#if NET472
202-
#elif NET11_0
203-
#else
204-
#error Target framework needs to be updated here
205-
#endif
201+
var packageRoot = Path.Combine(
202+
Path.GetDirectoryName(typeof(OperationTaskBase).Assembly.Location)!,
203+
"..",
204+
"..");
206205
args.Add(
207206
Path.Combine(
208-
Path.GetDirectoryName(typeof(OperationTaskBase).Assembly.Location)!,
209-
"..",
210-
"..",
207+
packageRoot,
211208
"tools",
212-
"net11.0",
209+
"net",
213210
"ef.dll"));
214211

215212
args.AddRange(AdditionalArguments);

src/EFCore.Tasks/buildTransitive/Microsoft.EntityFrameworkCore.Tasks.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
<Project ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
44
<PropertyGroup>
5-
<_TaskTargetFramework Condition="'$(MSBuildRuntimeType)' == 'Core'">net11.0</_TaskTargetFramework>
6-
<_TaskTargetFramework Condition="'$(MSBuildRuntimeType)' != 'Core'">net472</_TaskTargetFramework>
5+
<_TaskTargetFramework Condition="'$(MSBuildRuntimeType)' == 'Core'">net</_TaskTargetFramework>
6+
<_TaskTargetFramework Condition="'$(MSBuildRuntimeType)' != 'Core'">netframework</_TaskTargetFramework>
77
<_EFCustomTasksAssembly>$([MSBuild]::NormalizePath($(MSBuildThisFileDirectory),'..\tasks\$(_TaskTargetFramework)\$(MSBuildThisFileName).dll'))</_EFCustomTasksAssembly>
88
<EFScaffoldModelStage Condition="'$(EFScaffoldModelStage)'==''">publish</EFScaffoldModelStage>
99
<EFPrecompileQueriesStage Condition="'$(EFPrecompileQueriesStage)'==''">publish</EFPrecompileQueriesStage>

src/EFCore.Tools/EFCore.Tools.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ Update-Database
5050
<ItemGroup>
5151
<TfmSpecificPackageFile Include="tools/**/*" PackagePath="tools/" />
5252
<TfmSpecificPackageFile Include="$(IntermediateOutputPath)*.psd1" PackagePath="tools/" />
53-
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.dll" PackagePath="tools/$(TargetFramework)/any" />
54-
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.runtimeconfig.json" PackagePath="tools/$(TargetFramework)/any" />
55-
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.pdb" PackagePath="tools/$(TargetFramework)/any" />
53+
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.dll" PackagePath="tools/net" />
54+
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.runtimeconfig.json" PackagePath="tools/net" />
55+
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.pdb" PackagePath="tools/net" />
5656
</ItemGroup>
5757

5858
<ItemGroup>

src/EFCore.Tools/tools/EntityFrameworkCore.psm1

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,8 +1306,7 @@ function EF($project, $startupProject, $params, $applicationArgs, [switch] $skip
13061306
$projectAssetsFile = GetCpsProperty $startupProject 'ProjectAssetsFile'
13071307
$runtimeConfig = Join-Path $targetDir ($startupTargetName + '.runtimeconfig.json')
13081308
$runtimeFrameworkVersion = GetCpsProperty $startupProject 'RuntimeFrameworkVersion'
1309-
# TODO: Remove TFM from the path, issue #37473
1310-
$efPath = Join-Path $PSScriptRoot 'net10.0\any\ef.dll'
1309+
$efPath = Join-Path $PSScriptRoot 'net\ef.dll'
13111310

13121311
$dotnetParams = 'exec', '--depsfile', $depsFile
13131312

src/dotnet-ef/RootCommand.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,7 @@ protected override int Execute(string[] _)
150150
args.Add(startupProject.RuntimeFrameworkVersion);
151151
}
152152

153-
#if !NET10_0
154-
#error Target framework needs to be updated here, as well as in Microsoft.EntityFrameworkCore.Tasks.props and EntityFrameworkCore.psm1
155-
#endif
156-
// TODO: Remove TFM from the path, issue #37473
157-
args.Add(Path.Combine(toolsPath, "net10.0", "any", "ef.dll"));
153+
args.Add(Path.Combine(toolsPath, "net", "ef.dll"));
158154
}
159155
else if (targetFramework.Identifier == ".NETStandard")
160156
{

src/dotnet-ef/dotnet-ef.csproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,11 @@
6969

7070
<!-- PDBs are currently always included as PackAsTool packages don't support excluding them.
7171
https://github.com/dotnet/sdk/issues/53226 -->
72-
<!-- TODO: Remove TFM from the path, issue #37473 -->
7372
<Target Name="AddEfProjectOutput">
7473
<ItemGroup>
75-
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.dll" PackagePath="tools/$(TargetFramework)/any/tools/$(TargetFramework)/any" />
76-
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.runtimeconfig.json" PackagePath="tools/$(TargetFramework)/any/tools/$(TargetFramework)/any" />
77-
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.pdb" PackagePath="tools/$(TargetFramework)/any/tools/$(TargetFramework)/any" />
74+
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.dll" PackagePath="tools/$(TargetFramework)/any/tools/net" />
75+
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.runtimeconfig.json" PackagePath="tools/$(TargetFramework)/any/tools/net" />
76+
<TfmSpecificPackageFile Include="$(ArtifactsBinDir)ef/$(Configuration)/$(TargetFramework)/ef.pdb" PackagePath="tools/$(TargetFramework)/any/tools/net" />
7877
</ItemGroup>
7978
</Target>
8079

0 commit comments

Comments
 (0)