diff --git a/eng/liveILLink.targets b/eng/liveILLink.targets
index f18b89622982d9..4e5d5452d43a31 100644
--- a/eng/liveILLink.targets
+++ b/eng/liveILLink.targets
@@ -23,9 +23,8 @@
<_RequiresILLinkPack>false
-
- $(ToolsILLinkDir)$(NetCoreAppToolCurrent)\ILLink.Tasks.dll
- $(ToolsILLinkDir)$(NetFrameworkToolCurrent)\ILLink.Tasks.dll
+ $(ToolsILLinkDir)net\ILLink.Tasks.dll
+ $(ToolsILLinkDir)netframework\ILLink.Tasks.dll
diff --git a/eng/packaging.targets b/eng/packaging.targets
index c932768f71a102..4b72fe0a67a61d 100644
--- a/eng/packaging.targets
+++ b/eng/packaging.targets
@@ -303,13 +303,21 @@
+
+ net
+ netframework
+
+
+
+
<_BuildOutputPackageFile Include="$(OutputPath)**"
Exclude="$(OutputPath)publish\**;
$(OutputPath)" />
+ PackagePath="tools/$(BuildTaskTargetTfmSpecificFolder)/%(RecursiveDir)%(FileName)%(Extension)" />
-
+
<_RequiresILLinkPack>false
- $(ToolsILLinkDir)$(NetCoreAppToolCurrent)/ILLink.Tasks.dll
+ $(ToolsILLinkDir)net/ILLink.Tasks.dll
diff --git a/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props b/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props
index f19d61649f97f2..b3319b190b9c47 100644
--- a/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props
+++ b/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props
@@ -44,9 +44,9 @@
<_MonoAotCrossCompilerPath>$([MSBuild]::NormalizePath($(MonoAotCrossDir), 'mono-aot-cross'))
<_MonoAotCrossCompilerPath Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">$(_MonoAotCrossCompilerPath).exe
- $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'ILLink.Tasks', '$(Configuration)', '$(_NetCoreAppToolCurrent)', 'build', 'Microsoft.NET.ILLink.Tasks.props'))
- $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'ILLink.Tasks', '$(Configuration)', '$(_NetCoreAppToolCurrent)', 'build', 'Microsoft.NET.ILLink.targets'))
- <_ILLinkTasksAssembly>$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'ILLink.Tasks', '$(Configuration)', '$(_NetCoreAppToolCurrent)', 'ILLink.Tasks.dll'))
+ $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'ILLink.Tasks', '$(Configuration)', 'net', 'build', 'Microsoft.NET.ILLink.Tasks.props'))
+ $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'ILLink.Tasks', '$(Configuration)', 'net', 'build', 'Microsoft.NET.ILLink.targets'))
+ <_ILLinkTasksAssembly>$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'ILLink.Tasks', '$(Configuration)', 'net', 'ILLink.Tasks.dll'))
@@ -68,9 +68,9 @@
$([MSBuild]::NormalizeDirectory('$(BuildBaseDir)', 'aotsdk'))
$(MicrosoftNetCoreAppRuntimePackLibDir)
$(MicrosoftNetCoreAppRuntimePackNativeDir)
- $([MSBuild]::NormalizePath('$(BuildBaseDir)', '$(_NetCoreAppToolCurrent)', 'build', ''Microsoft.NET.ILLink.Tasks.props''))
- $([MSBuild]::NormalizePath('$(BuildBaseDir)', '$(_NetCoreAppToolCurrent)', 'build', 'Microsoft.NET.ILLink.targets'))
- <_ILLinkTasksAssembly>$([MSBuild]::NormalizePath('$(BuildBaseDir)', '$(_NetCoreAppToolCurrent)', 'ILLink.Tasks.dll'))
+ $([MSBuild]::NormalizePath('$(BuildBaseDir)', 'net', 'build', ''Microsoft.NET.ILLink.Tasks.props''))
+ $([MSBuild]::NormalizePath('$(BuildBaseDir)', 'net', 'build', 'Microsoft.NET.ILLink.targets'))
+ <_ILLinkTasksAssembly>$([MSBuild]::NormalizePath('$(BuildBaseDir)', 'net', 'ILLink.Tasks.dll'))
<_MonoAotCrossCompilerPath>$([MSBuild]::NormalizePath($(MonoAotCrossDir), 'mono-aot-cross'))
<_MonoAotCrossCompilerPath Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">$(_MonoAotCrossCompilerPath).exe
diff --git a/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj b/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
index 155ed36c8bb0ee..e753166d45f3bb 100644
--- a/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
+++ b/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
@@ -20,6 +20,12 @@
$(TargetsForTfmSpecificContentInPackage);AddBuildOutputToToolsPackage
false
+
+ false
+ $(OutputPath)net\
+ $(OutputPath)netframework\
+ $(IntermediateOutputPath)net\
+ $(IntermediateOutputPath)netframework\
-
-
-
-
diff --git a/src/tools/illink/src/ILLink.Tasks/LinkTask.cs b/src/tools/illink/src/ILLink.Tasks/LinkTask.cs
index b54b2c7510df1d..979d5599fdab8f 100644
--- a/src/tools/illink/src/ILLink.Tasks/LinkTask.cs
+++ b/src/tools/illink/src/ILLink.Tasks/LinkTask.cs
@@ -270,8 +270,7 @@ public string ILLinkPath {
#pragma warning restore IL3000 // Avoid accessing Assembly file path when publishing as a single file
// IL Linker always runs on .NET Core, even when using desktop MSBuild to host ILLink.Tasks.
- // ILLinkImplFramework ()= NetCoreAppToolCurrent) was used to build the corresponding illink.dll
- string path = Path.Combine (Path.GetDirectoryName (taskDirectory), BuildMetadata.ILLinkImplFramework, "illink.dll");
+ string path = Path.Combine (Path.GetDirectoryName (taskDirectory), "net", "illink.dll");
Log.LogMessage(MessageImportance.Normal, $"ILLink.Tasks path: {path}");
diff --git a/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.Tasks.props b/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.Tasks.props
index f624c914ea8ea7..d5cc0bd7df879c 100644
--- a/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.Tasks.props
+++ b/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.Tasks.props
@@ -18,8 +18,8 @@ Copyright (c) .NET Foundation. All rights reserved.
true
- $(MSBuildThisFileDirectory)..\tools\net9.0\ILLink.Tasks.dll
- $(MSBuildThisFileDirectory)..\tools\net472\ILLink.Tasks.dll
+ $(MSBuildThisFileDirectory)..\tools\net\ILLink.Tasks.dll
+ $(MSBuildThisFileDirectory)..\tools\netframework\ILLink.Tasks.dll
$(MSBuildThisFileDirectory)Microsoft.NET.ILLink.Analyzers.props