Skip to content

Linker does not remove unused assemblies if they are referenced in NSObject subclasses #15723

@tipa

Description

@tipa

The linked does not correctly remove unused assemblies / methods when those calls are located in a NSObject subclass.
This increases the built .ipa unnecessarily.

Steps to Reproduce

  1. Download test project
  2. Open terminal and navigate into the test folder
  3. call dotnet publish -c Release
  4. rename /test/bin/Release/net6.0-ios/ios-arm64/publish/test.ipa to a zip file and inspect

Expected Behavior

The package does not contain System.Text.Json.dll & others
Screenshot 2022-08-22 at 18 51 52

Actual Behavior

The package does not contain System.Text.Json.dll & others
Screenshot 2022-08-22 at 18 51 59

Additional notes

The linker also correctly removes the assembly when the UnusedClass is commented out or when the UnusedClass does not extend NSObject.

Environment

Version information
Visual Studio Community 2022 for Mac Preview
Version 17.4 Preview (17.4 build 715)
Installation UUID: 67751e62-e762-44da-8eb3-677faa27413a

Runtime
.NET 6.0.5 (64-bit)
Architecture: Arm64

Roslyn (Language Service)
4.4.0-1.22371.1+c07f2571612b471671c809b5b0db59b0c37aab57

NuGet
Version: 6.2.1.2

.NET SDK (Arm64)
SDK: /usr/local/share/dotnet/sdk/6.0.400/Sdks
SDK Version: 6.0.400
MSBuild SDKs: /Applications/Visual Studio (Preview).app/Contents/MonoBundle/MSBuild/Current/bin/Sdks

.NET Runtime (Arm64)
Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
	6.0.8
	6.0.0

.NET Runtime (x64)
Runtime: /usr/local/share/dotnet/x64/dotnet
Runtime Version: 6.0.8

Xamarin.Profiler
Version: 1.8.0.19
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

Updater
Version: 11

Xamarin Designer
Version: 17.4.0.32
Hash: 439b92ed7b
Branch: remotes/origin/d17-4
Build date: 2022-08-04 16:29:17 UTC

Xamarin.Android
Not Installed

Microsoft Build of OpenJDK
Java SDK: Not Found

Eclipse Temurin JDK
Java SDK: Not Found

Android SDK Manager
Version: 17.4.0.24
Hash: b3b6672
Branch: remotes/origin/HEAD~1
Build date: 2022-08-04 16:29:21 UTC

Android Device Manager
Version: 0.0.0.1179
Hash: 0f220c0
Branch: main
Build date: 2022-08-04 16:29:21 UTC

Apple Developer Tools
Xcode 13.4.1 (20504)
Build 13F100

Xamarin.Mac
Version: 8.12.0.2 (Visual Studio Community)
Hash: 87f98a75e
Branch: d17-3
Build date: 2022-07-25 20:18:54-0400

Xamarin.iOS
Version: 15.12.0.2 (Visual Studio Community)
Hash: 87f98a75e
Branch: d17-3
Build date: 2022-07-25 20:18:55-0400

Build Information
Release ID: 1704000715
Git revision: 09071dadfc1b81e4f0e2c9505cd8a5ef0b41d312
Build date: 2022-08-04 16:26:39+00
Build branch: release-17.4
Build lane: release-17.4

Operating System
Mac OS X 12.5.1
Darwin 21.6.0 Darwin Kernel Version 21.6.0
    Wed Aug 10 14:28:35 PDT 2022
    root:xnu-8020.141.5~2/RELEASE_ARM64_T8101 arm64


Example Project (If Possible)

test.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureA feature to be implemented

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions