Skip to content

Commit 5d8932a

Browse files
authored
Merge pull request #389 from Cysharp/feature/ExcludeWellKnownAssemblies
Exclude well-known assemblies from automatic discovery of services.
2 parents e5a58d1 + bfddfef commit 5d8932a

1 file changed

Lines changed: 38 additions & 1 deletion

File tree

src/MagicOnion.Server/MagicOnionEngine.cs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,44 @@ public static MagicOnionServiceDefinition BuildServerServiceDefinition(IServiceP
3232
/// <param name="options">The options for MagicOnion server</param>
3333
public static MagicOnionServiceDefinition BuildServerServiceDefinition(IServiceProvider serviceProvider, MagicOnionOptions options)
3434
{
35-
return BuildServerServiceDefinition(serviceProvider, AppDomain.CurrentDomain.GetAssemblies(), options);
35+
// NOTE: Exclude well-known system assemblies from automatic discovery of services.
36+
var wellKnownIgnoreAssemblies = new[]
37+
{
38+
"netstandard",
39+
"System.*",
40+
"Microsoft.Win32.*",
41+
"Microsoft.Extensions.*",
42+
"Microsoft.AspNetCore",
43+
"Microsoft.AspNetCore.*",
44+
"Grpc.*",
45+
"MessagePack",
46+
"MessagePack.*",
47+
"MagicOnion.Server",
48+
"MagicOnion.Server.*",
49+
"MagicOnion.Client",
50+
"MagicOnion.Client.*", // MagicOnion.Client.DynamicClient (MagicOnionClient.Create<T>)
51+
"MagicOnion.Abstractions",
52+
"MagicOnion.Shared",
53+
};
54+
55+
var assemblies = AppDomain.CurrentDomain.GetAssemblies()
56+
.Where(x =>
57+
{
58+
return !wellKnownIgnoreAssemblies.Any(y =>
59+
{
60+
if (y.EndsWith('*'))
61+
{
62+
return x.GetName().Name!.StartsWith(y.Substring(0, y.Length - 1));
63+
}
64+
else
65+
{
66+
return x.GetName().Name == y;
67+
}
68+
});
69+
})
70+
.ToArray();
71+
72+
return BuildServerServiceDefinition(serviceProvider, assemblies, options);
3673
}
3774

3875
/// <summary>

0 commit comments

Comments
 (0)