| File: Linker.Steps\RemoveResourcesStep.cs | Web Access |
| Project: src\runtime\src\tools\illink\src\linker\Mono.Linker.csproj (illink) |
// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; using System.Linq; using Mono.Cecil; namespace Mono.Linker.Steps { public class RemoveResourcesStep : BaseStep { protected override void ProcessAssembly(AssemblyDefinition assembly) { if (!ShouldProcess(assembly)) return; RemoveFSharpCompilationResources(assembly); } private bool ShouldProcess(AssemblyDefinition assembly) { if (!assembly.MainModule.HasResources) return false; var action = Annotations.GetAction(assembly); return action == AssemblyAction.Link || action == AssemblyAction.Save; } private void RemoveFSharpCompilationResources(AssemblyDefinition assembly) { var resourcesInAssembly = assembly.MainModule.Resources.OfType<EmbeddedResource>(); foreach (var resource in resourcesInAssembly.Where(IsFSharpCompilationResource)) { Annotations.AddResourceToRemove(assembly, resource); } static bool IsFSharpCompilationResource(Resource resource) => resource.Name.StartsWith("FSharpSignatureData", StringComparison.Ordinal) || resource.Name.StartsWith("FSharpOptimizationData", StringComparison.Ordinal); } } }