diff --git a/eng/Publishing.props b/eng/Publishing.props
index 172a6c0b220e58..95914a4553c327 100644
--- a/eng/Publishing.props
+++ b/eng/Publishing.props
@@ -22,6 +22,12 @@
<_HostArtifact Include="$(ArtifactsPackagesDir)**\runtime.*.Microsoft.NETCore.ILDAsm.*.nupkg"
Exclude="$(ArtifactsPackagesDir)**\runtime.$(TargetRid).Microsoft.NETCore.ILDAsm.*.nupkg" />
+ <_HostArtifact Include="$(ArtifactsPackagesDir)**\runtime.*.Microsoft.dotnet-ilasm.*.nupkg"
+ Exclude="$(ArtifactsPackagesDir)**\runtime.$(TargetRid).Microsoft.dotnet-ilasm.*.nupkg" />
+
+ <_HostArtifact Include="$(ArtifactsPackagesDir)**\runtime.*.Microsoft.dotnet-ildasm.*.nupkg"
+ Exclude="$(ArtifactsPackagesDir)**\runtime.$(TargetRid).Microsoft.dotnet-ildasm.*.nupkg" />
+
<_HostArtifact Include="$(ArtifactsPackagesDir)**\runtime.*.Microsoft.DotNet.ILCompiler.*.nupkg"
Exclude="$(ArtifactsPackagesDir)**\runtime.$(TargetRid).Microsoft.DotNet.ILCompiler.*.nupkg" />
diff --git a/src/coreclr/.nuget/Microsoft.dotnet-ilasm/DotnetToolSettings.xml b/src/coreclr/.nuget/Microsoft.dotnet-ilasm/DotnetToolSettings.xml
new file mode 100644
index 00000000000000..93892647092a3a
--- /dev/null
+++ b/src/coreclr/.nuget/Microsoft.dotnet-ilasm/DotnetToolSettings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/coreclr/.nuget/Microsoft.dotnet-ilasm/Microsoft.dotnet-ilasm.pkgproj b/src/coreclr/.nuget/Microsoft.dotnet-ilasm/Microsoft.dotnet-ilasm.pkgproj
new file mode 100644
index 00000000000000..7501f1b4ebef3a
--- /dev/null
+++ b/src/coreclr/.nuget/Microsoft.dotnet-ilasm/Microsoft.dotnet-ilasm.pkgproj
@@ -0,0 +1,85 @@
+
+
+
+
+ The .NET IL Assembler.
+
+Usage:
+ Install as a global tool:
+ dotnet tool install -g Microsoft.dotnet-ilasm
+
+ Invoke the tool:
+ ilasm [options] <sourcefile>
+
+ For help on ilasm command-line options:
+ ilasm -?
+
+
+ DotnetTool
+
+
+
+ true
+ $(MinOSForArch)-$(PackagePlatform)
+
+
+
+
+
+ tools/$(NetCoreAppToolCurrent)/$(PackageTargetRuntime)/
+
+
+ tools/$(NetCoreAppToolCurrent)/$(PackageTargetRuntime)/
+
+
+
+ tools/$(NetCoreAppToolCurrent)/$(PackageTargetRuntime)/
+
+
+
+
+
+
+
+ <_OfficialRID Include="win-x64" />
+ <_OfficialRID Include="win-x86" />
+ <_OfficialRID Include="win-arm64" />
+ <_OfficialRID Include="linux-x64" />
+ <_OfficialRID Include="linux-arm" />
+ <_OfficialRID Include="linux-arm64" />
+ <_OfficialRID Include="linux-musl-x64" />
+ <_OfficialRID Include="linux-musl-arm64" />
+ <_OfficialRID Include="osx-x64" />
+ <_OfficialRID Include="osx-arm64" />
+
+ <_OfficialRID Include="$(TargetRid)" Exclude="@(_OfficialRID)" />
+
+
+
+ <_GeneratedManifestPath>$(IntermediateOutputPath)DotnetToolSettings.xml
+ <_RidPackagesXml>@(_OfficialRID->' <RuntimeIdentifierPackage RuntimeIdentifier="%(Identity)" Id="runtime.%(Identity).Microsoft.dotnet-ilasm" Version="$(PackageVersion)" />', '%0a')
+ <_ManifestContent>
+
+
+
+
+
+
+]]>$(_RidPackagesXml)
+]]>
+
+
+
+
+
+
+
+
+ tools/$(NetCoreAppToolCurrent)/any/DotnetToolSettings.xml
+
+
+
+
+
+
diff --git a/src/coreclr/.nuget/Microsoft.dotnet-ilasm/Microsoft.dotnet-ilasm.proj b/src/coreclr/.nuget/Microsoft.dotnet-ilasm/Microsoft.dotnet-ilasm.proj
new file mode 100644
index 00000000000000..476a3bfd94c567
--- /dev/null
+++ b/src/coreclr/.nuget/Microsoft.dotnet-ilasm/Microsoft.dotnet-ilasm.proj
@@ -0,0 +1,11 @@
+
+
+ true
+
+
+
+
+
+
+
+
diff --git a/src/coreclr/.nuget/Microsoft.dotnet-ildasm/DotnetToolSettings.xml b/src/coreclr/.nuget/Microsoft.dotnet-ildasm/DotnetToolSettings.xml
new file mode 100644
index 00000000000000..351589b8f65ead
--- /dev/null
+++ b/src/coreclr/.nuget/Microsoft.dotnet-ildasm/DotnetToolSettings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/coreclr/.nuget/Microsoft.dotnet-ildasm/Microsoft.dotnet-ildasm.pkgproj b/src/coreclr/.nuget/Microsoft.dotnet-ildasm/Microsoft.dotnet-ildasm.pkgproj
new file mode 100644
index 00000000000000..9cb46b76754fd5
--- /dev/null
+++ b/src/coreclr/.nuget/Microsoft.dotnet-ildasm/Microsoft.dotnet-ildasm.pkgproj
@@ -0,0 +1,85 @@
+
+
+
+
+ The .NET IL Disassembler.
+
+Usage:
+ Install as a global tool:
+ dotnet tool install -g Microsoft.dotnet-ildasm
+
+ Invoke the tool:
+ ildasm [options] <file>
+
+ For help on ildasm command-line options:
+ ildasm -?
+
+
+ DotnetTool
+
+
+
+ true
+ $(MinOSForArch)-$(PackagePlatform)
+
+
+
+
+
+ tools/$(NetCoreAppToolCurrent)/$(PackageTargetRuntime)/
+
+
+ tools/$(NetCoreAppToolCurrent)/$(PackageTargetRuntime)/
+
+
+
+ tools/$(NetCoreAppToolCurrent)/$(PackageTargetRuntime)/
+
+
+
+
+
+
+
+ <_OfficialRID Include="win-x64" />
+ <_OfficialRID Include="win-x86" />
+ <_OfficialRID Include="win-arm64" />
+ <_OfficialRID Include="linux-x64" />
+ <_OfficialRID Include="linux-arm" />
+ <_OfficialRID Include="linux-arm64" />
+ <_OfficialRID Include="linux-musl-x64" />
+ <_OfficialRID Include="linux-musl-arm64" />
+ <_OfficialRID Include="osx-x64" />
+ <_OfficialRID Include="osx-arm64" />
+
+ <_OfficialRID Include="$(TargetRid)" Exclude="@(_OfficialRID)" />
+
+
+
+ <_GeneratedManifestPath>$(IntermediateOutputPath)DotnetToolSettings.xml
+ <_RidPackagesXml>@(_OfficialRID->' <RuntimeIdentifierPackage RuntimeIdentifier="%(Identity)" Id="runtime.%(Identity).Microsoft.dotnet-ildasm" Version="$(PackageVersion)" />', '%0a')
+ <_ManifestContent>
+
+
+
+
+
+
+]]>$(_RidPackagesXml)
+]]>
+
+
+
+
+
+
+
+
+ tools/$(NetCoreAppToolCurrent)/any/DotnetToolSettings.xml
+
+
+
+
+
+
diff --git a/src/coreclr/.nuget/Microsoft.dotnet-ildasm/Microsoft.dotnet-ildasm.proj b/src/coreclr/.nuget/Microsoft.dotnet-ildasm/Microsoft.dotnet-ildasm.proj
new file mode 100644
index 00000000000000..476a3bfd94c567
--- /dev/null
+++ b/src/coreclr/.nuget/Microsoft.dotnet-ildasm/Microsoft.dotnet-ildasm.proj
@@ -0,0 +1,11 @@
+
+
+ true
+
+
+
+
+
+
+
+
diff --git a/src/coreclr/.nuget/coreclr-packages.proj b/src/coreclr/.nuget/coreclr-packages.proj
index 609e6884946c88..aab8863dfda14f 100644
--- a/src/coreclr/.nuget/coreclr-packages.proj
+++ b/src/coreclr/.nuget/coreclr-packages.proj
@@ -10,6 +10,8 @@
+
+