Skip to content

Commit 81e159e

Browse files
authored
Fix trim warning in ComponentActivator (#82952)
* Fix trim warning in ComponentActivator * Add UnsupportedOSPlatform attributes
1 parent 3efd9a4 commit 81e159e

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

src/libraries/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComponentActivator.cs

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -140,26 +140,34 @@ public static unsafe int LoadAssembly(IntPtr assemblyPathNative, IntPtr loadCont
140140

141141
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode",
142142
Justification = "The same feature switch applies to GetFunctionPointer and this function. We rely on the warning from GetFunctionPointer.")]
143-
static void LoadAssemblyLocal(string assemblyPath)
143+
static void LoadAssemblyLocal(string assemblyPath) => LoadAssemblyImpl(assemblyPath);
144+
}
145+
146+
[RequiresUnreferencedCode(TrimIncompatibleWarningMessage, Url = "https://aka.ms/dotnet-illink/nativehost")]
147+
[UnsupportedOSPlatform("android")]
148+
[UnsupportedOSPlatform("browser")]
149+
[UnsupportedOSPlatform("ios")]
150+
[UnsupportedOSPlatform("maccatalyst")]
151+
[UnsupportedOSPlatform("tvos")]
152+
private static void LoadAssemblyImpl(string assemblyPath)
153+
{
154+
lock(s_loadedInDefaultContext)
144155
{
145-
lock(s_loadedInDefaultContext)
146-
{
147-
if (s_loadedInDefaultContext.Contains(assemblyPath))
148-
return;
149-
150-
var resolver = new AssemblyDependencyResolver(assemblyPath);
151-
AssemblyLoadContext.Default.Resolving +=
152-
(context, assemblyName) =>
153-
{
154-
string? assemblyPath = resolver.ResolveAssemblyToPath(assemblyName);
155-
return assemblyPath != null
156-
? context.LoadFromAssemblyPath(assemblyPath)
157-
: null;
158-
};
159-
160-
AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyPath);
161-
s_loadedInDefaultContext.Add(assemblyPath);
162-
}
156+
if (s_loadedInDefaultContext.Contains(assemblyPath))
157+
return;
158+
159+
var resolver = new AssemblyDependencyResolver(assemblyPath);
160+
AssemblyLoadContext.Default.Resolving +=
161+
(context, assemblyName) =>
162+
{
163+
string? assemblyPath = resolver.ResolveAssemblyToPath(assemblyName);
164+
return assemblyPath != null
165+
? context.LoadFromAssemblyPath(assemblyPath)
166+
: null;
167+
};
168+
169+
AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyPath);
170+
s_loadedInDefaultContext.Add(assemblyPath);
163171
}
164172
}
165173

0 commit comments

Comments
 (0)