From d7b29656bc1df2951589f39ca4adf8741b88ba5d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:14:47 +0000 Subject: [PATCH 1/2] Initial plan From b6391bee59b50fdd7d2d578e629fb06611635cb5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:20:21 +0000 Subject: [PATCH 2/2] Fix NativeAOT satellite assembly passthrough for package resources Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/43b9b3d5-da9c-475f-9496-f58388261d7f Co-authored-by: sbomer <787361+sbomer@users.noreply.github.com> --- .../Microsoft.NETCore.Native.Publish.targets | 5 +-- ...mputeManagedAssembliesToCompileToNative.cs | 45 ------------------- 2 files changed, 2 insertions(+), 48 deletions(-) diff --git a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Publish.targets b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Publish.targets index 6d5a7bd30271b7..bf473414890f6c 100644 --- a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Publish.targets +++ b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Publish.targets @@ -8,7 +8,7 @@ <_IlcManagedInputAssemblies Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.PostprocessAssembly)' == 'true'" /> - + @@ -35,7 +35,7 @@ - + $(NativeBinaryPrefix)$(TargetName)$(NativeBinaryExt) @@ -122,7 +122,6 @@ SdkAssemblies="@(PrivateSdkAssemblies)" FrameworkAssemblies="@(FrameworkAssemblies)"> - diff --git a/src/coreclr/tools/aot/ILCompiler.Build.Tasks/ComputeManagedAssembliesToCompileToNative.cs b/src/coreclr/tools/aot/ILCompiler.Build.Tasks/ComputeManagedAssembliesToCompileToNative.cs index 19d435e2303422..73179781b2f6d4 100644 --- a/src/coreclr/tools/aot/ILCompiler.Build.Tasks/ComputeManagedAssembliesToCompileToNative.cs +++ b/src/coreclr/tools/aot/ILCompiler.Build.Tasks/ComputeManagedAssembliesToCompileToNative.cs @@ -7,8 +7,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; -using System.Reflection.Metadata; -using System.Reflection.PortableExecutable; @@ -74,13 +72,6 @@ public string DotNetHostPolicyLibraryName set; } - [Output] - public ITaskItem[] SatelliteAssemblies - { - get; - set; - } - /// /// CoreCLR runtime pack files (apphost, native assets, managed assemblies replaced by NativeAOT equivalents) /// that should be removed from the publish output and replaced with NativeAOT runtime pack assemblies. @@ -95,7 +86,6 @@ public ITaskItem[] RuntimePackFilesToSkipPublish public override bool Execute() { var runtimePackFilesToSkipPublish = new List(); - var satelliteAssemblies = new List(); var nativeAotFrameworkAssembliesToUse = new Dictionary(); foreach (ITaskItem taskItem in SdkAssemblies) @@ -159,44 +149,9 @@ public override bool Execute() runtimePackFilesToSkipPublish.Add(taskItem); continue; } - - // Only classify files that the SDK has identified as managed runtime assemblies. - // Other files (e.g. Content items that happen to be managed assemblies) should be - // left alone and allowed to be published as-is. - if (!taskItem.GetMetadata("PostprocessAssembly").Equals("true", StringComparison.OrdinalIgnoreCase)) - { - continue; - } - - // Check if this is a satellite assembly by reading its culture metadata. - // Non-managed files are silently skipped as a safety measure. - try - { - using (FileStream moduleStream = File.OpenRead(itemSpec)) - using (var module = new PEReader(moduleStream)) - { - if (module.HasMetadata) - { - MetadataReader moduleMetadataReader = module.GetMetadataReader(); - if (moduleMetadataReader.IsAssembly) - { - string culture = moduleMetadataReader.GetString(moduleMetadataReader.GetAssemblyDefinition().Culture); - - if (culture != "" && !culture.Equals("neutral", StringComparison.OrdinalIgnoreCase)) - { - satelliteAssemblies.Add(taskItem); - } - } - } - } - } - catch (BadImageFormatException) - { - } } RuntimePackFilesToSkipPublish = runtimePackFilesToSkipPublish.ToArray(); - SatelliteAssemblies = satelliteAssemblies.ToArray(); return true;